我正在尝试将一些用 Java 编写的逻辑转换为 PHP,并且在对 double 执行数学运算时在 PHP 中看到与 java 不同的输出。
查看下面的代码和输出
--------- java --------------
double x = 0.1*(double)37.17;
System.out.print(x); // prints 3.7170000000000005
--------- PHP --------------
$x = 0.1*(double)37.17;
echo $x; // prints 3.717
为什么会这样?当我在某些对数运算中使用这些值时,结果会产生显着差异。
最佳答案
问题不在于算术本身。问题是默认情况下 PHP 输出小数点后两位数字的 float 。
您可以使用 ini_set
更改此(默认);即
ini_set('precision', 17);
或者,您可以使用format_number
将数字转换为字符串,并直接控制小数点后的位数。或者使用 printf
。
更多信息:
关于java - 将 Java 代码转换为 PHP - 在对双数执行数学运算时 php 中丢失有效数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40188722/