首页 > 解决方案 > 在 PHP 中打印双精度值的真实值?

问题描述

我有一个双倍的 $measure,对于我的“歌曲”中的每一个节拍,我都会添加另一个双倍。当 $measure 增加一个整数时,我想打印这个新的度量值。

似乎 PHP 想要对这些值进行四舍五入,以使双倍对我来说看起来不错。这是我得到的示例打印输出:

尺寸:17 楼层:16 舍入:16

从代码:

echo "Measure: " . floatval($measure) . "Floor: " . floor($measure) . " Rounded: " . $roundMeasure . " ";

似乎 $measure 实际上包含 16.99999999 或一些类似的值。有什么方法可以阅读它的实际内容吗?更好的是,有什么方法可以使用 PHP 的舍入系统,这样我就可以抓住 17?谢谢。

标签: php

解决方案


更好的是,有没有办法使用 PHP 的舍入系统,所以我可以抓住 17

通常你会使用定点算术,例如使用 64ths,然后在输出中转换。

或者您可以检查度量值是否增加了与其 floor() 不同的值,例如小于 0.00001。

一般来说,您永远不应该依赖具有“精确”值的浮点值 -很可能它不会

作为权宜之计,您可以更改 php.ini 中的精度:

; The number of significant digits displayed in floating point numbers.
; http://php.net/precision
precision = 17

否则,您可能会转到BCMath

对于任意精度数学,PHP 提供二进制计算器,如果有足够的内存,它支持任何大小和精度高达 2147483647(或 0x7FFFFFFF)小数的数字,以字符串表示。


推荐阅读