MySQL子查询返回无限循环小数和无限不循环小数有差别,原理是什么呢?

不管无限循环小数,还是无限不循环小数,在MySQL里计算的时候都是近似值,无理数存储的时候也是近似值;

另外就是MySQL里是无法存放无限循环小数的,当然无限不循环也一样不能存储,一旦存储,就都是近似的有理数。

在MySQL5.7的系统里(此处使用的是模拟器,与实际情况可能有差别):

  1. 无限循环小数计算的结果是,保留小数点后9位【与题主列举的情况不同】;
  2. 无限不循环小数比如圆周率PI(),是直接按照小数点后15位的近似值存放在数据库中;
  3. 而题主所列的sqrt()开根号后,MySQL的值也是取的近似值,具体取值原则就得看源码了。