相关疑难解决方法(0)

PHP - 浮点数精度

$a = '35';
$b = '-34.99';
echo ($a + $b);
Run Code Online (Sandbox Code Playgroud)

结果在0.009999999999998

怎么了?我想知道为什么我的程序会报告奇怪的结果.

为什么PHP没有返回预期的0.01?

php floating-point precision floating-accuracy

77
推荐指数
4
解决办法
4万
查看次数

PHP7.1 json_encode()Float问题

这不是一个问题,因为它更多的是意识到.我更新了一个json_encode()用于PHP7.1.1 的应用程序,我看到一个问题,浮动被更改为有时延伸出17位数.根据文档,serialize_precision在编码double值时,PHP 7.1.x开始使用而不是精度.我猜这导致了一个示例值

472.185

成为

472.18500000000006

在那个价值经历之后json_encode().自从我发现以来,我已经恢复到PHP 7.0.16并且我不再有问题了json_encode().我还尝试在恢复到PHP 7.0.16之前更新到PHP 7.1.2.

这个问题背后的原因确实源于PHP - 浮点数精度,但最终所有原因都是因为从精度到serialize_precision使用的变化json_encode().

如果有人知道这个问题的解决方案,我会非常乐意听取推理/修复.

摘自多维数组(之前):

[staticYaxisInfo] => Array
                    (
                        [17] => stdClass Object
                            (
                                [variable_id] => 17
                                [static] => 1
                                [min] => 0
                                [max] => 472.185
                                [locked_static] => 1
                            )

                    )
Run Code Online (Sandbox Code Playgroud)

经过json_encode()......之后

"staticYaxisInfo":
            {
                "17":
                {
                    "variable_id": "17",
                    "static": "1",
                    "min": 0,
                    "max": 472.18500000000006,
                    "locked_static": "1"
                }
            },
Run Code Online (Sandbox Code Playgroud)

php precision json php-7.1

67
推荐指数
4
解决办法
2万
查看次数

将float格式化为两位小数

我想格式化一个浮点值我有两个小数位.

例如,如果我有一个浮动的价格5.2,我希望它格式化为5.20.

php string

34
推荐指数
2
解决办法
6万
查看次数

减去时PHP浮点计算错误

我有一个非常奇怪的问题.如果我减去2个浮点数,其中一个是数学运算的结果,我得到一个错误的值.

例:

var_dump($remaining);
var_dump($this->hours_sub['personal']);
echo $remaining-$this->hours_sub['personal'];
Run Code Online (Sandbox Code Playgroud)

这是它的输出:

float 5.4
float 1.4
5.3290705182008E-15
Run Code Online (Sandbox Code Playgroud)

5.4-1.4应为4 如果我添加两个值,结果是正确的.

我的错误在哪里?它不能成为一个四舍五入的问题.

php math floating-point formatting

19
推荐指数
3
解决办法
2万
查看次数