当我在数据库中与浮点值进行交互时,我的代码中的任何地方都是round();它在PHP中为2位小数,为什么我有时会得到这样的值:0.00000305176在我的数据库中?
答案 0 :(得分:1)
据我所知,大多数,如果不是所有的编程语言都受到这个特定问题的困扰,原因在于,非技术性的,因为机器使用二进制系统来完成操作,从我的理解,我们期待结果是十进制。
如果我理解正确,语言无法精确地表示诸如0.1,0.2等左右的值,因为它并不像我们那样理解小数。
虽然我们在10s,100s和1000上有小数增加,但在数学上用幂表示它是10 ^ 1,10 ^ 2,10 ^ 3,小数相同的方式10 ^ -1,10 ^ -2,10 ^ -3,表示0.1,0.01和0.001。
然而,在二进制中,基数是2而不是10,所以相同的幂指数适用,你得到2,4,8,并且在十进制中你得到0.5,0.25,0.125,0.0625。所以你看,机器很难得到精确的0.1,它可以接近。