当我减去两个值时,我得到 awk 结果,错误是我得到指数值 2.7755575615629E-17 而不是 0。我缺少应用的任何内容,请提出建议。仅在某些情况下才会发生这种情况,例如 0.66、0.67、0.33、
我正在使用的代码原型(prototype)如下,
$_SESSION['x'] = 1;
$_SESSION['x'] = $_SESSION['x'] - 0.83;
echo ( $_SESSION['x']- 0.17) ;
echo '<br>';
但是在反转值时,0 一切都很好
$_SESSION['x'] = 1;
$_SESSION['x'] = $_SESSION['x'] - 0.17;
echo ( $_SESSION['x']- 0.83) ;
echo '<br>';
最佳答案
这是因为它是 float 。并按照手册
“ float 的大小取决于平台,尽管最大 ~1.8e308 且精度约为 14 位十进制数字是常见值(64 位 IEEE 格式)。”
http://php.net/manual/en/language.types.float.php
现在可以通过使用类型将结果转换为 (int) 或对结果进行四舍五入来完成两件事。
另一个选项是使用 sprintf
这是一个例子
$a = 0.00001234;
echo $a ;
输出如下
1.234E-5
现在如果我们这样做
echo (int)$a ;
The output is 0
或
echo round($a) ;
output will be 0
最后,如果我们这样做
echo sprintf('%f', $a);
We will get 0.000012
关于PHP : The awk subtraction giving exponential values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21598667/