PHP : The awk subtraction giving exponential values

标签 php awk session-variables

当我减去两个值时,我得到 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/

相关文章:

php - 使用这些表的房间阻塞

PHP 没有用于 XML 安全实体解码的函数吗?没有一些 xml_entity_decode?

linux - Shell 脚本中的 awk 命令如何用于减去也包含字符的列中的整数?

bash - 将 shell 参数传递给 awk 不起作用

PHP MySQL多维数组按条件日期排序

php - 如何在 CodeIgniter 中为通用任务实现观察者模式

bash - sed:替换一段文本

php - 注册后登录/重定向 PHP mySQL

c# - session 变量返回 null

java - Openbravo servlet session