关于PHP浮点数计算精度问题 intval(0.57*100)

请大神详细解释一下。

  • 浮点数这个问题:$a = 0.57*100 = 56.999999999999

  • $a = (int)$a; 56

  • 但是为啥只有0.57和0.58呢,其他不存在这个问题(例如:0.55,0.59都没问题)。

最佳答案

我们都知道计算机的本质就是1和2。浮点型的存储机制就是这样。看起来是有位数的 但它在二进制里面是无穷的 如果你想处理这个问题 先把浮点数转成字符串类型 在转成数字类型方法 intval(strval(0.57*100)); 看下鸟叔的这篇博客你就懂了 www.laruence.com/2013/03/26/2884.h...

3年前 评论
讨论数量: 1

我们都知道计算机的本质就是1和2。浮点型的存储机制就是这样。看起来是有位数的 但它在二进制里面是无穷的 如果你想处理这个问题 先把浮点数转成字符串类型 在转成数字类型方法 intval(strval(0.57*100)); 看下鸟叔的这篇博客你就懂了 www.laruence.com/2013/03/26/2884.h...

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!