问答详情
源自:2-3 kotlin数据运算(一)

float类型的小数点6位后数字并不是单纯的四舍五入,例如3.1415924444会变成3.1415925 3.141592222会变成3.1415923

这里面的逻辑是什么?

提问者:慕设计532529 2022-05-03 18:10

个回答

  • 任e逍遥
    2024-05-12 07:40:12

    说小数点后6位会被自动舍去其实是不对的。因为这个限制不来源于算法,而来源于32位浮点精度的计算机限制。float大概可以精确7位数字(小数点前的位数+小数点后的位数),后面的数字是不精确的,而且是按照二进制舍入的,不是按照十进制。

    如果你做科学计算,最好直接用double,我之前用float就造成了微小误差的累积