gpt4 book ai didi

php - 错误的 PHP 字符串相等性

转载 作者:可可西里 更新时间:2023-11-01 13:11:10 25 4
gpt4 key购买 nike

出于某种原因,PHP 决定如果:

$a = "3.14159265358979326666666666"

$b = "3.14159265358979323846264338"

$a == $b 为真。

这是为什么,我该如何解决?

它毁了我的代码。

最佳答案

问题

PHP 将字符串(如果可能)转换为数字 ( source )。 float 的精度有限 ( source )。所以 $a == $b 因为舍入错误。

修复

使用 ===!==

试一试

<?php

$a = "3.14159265358979326666666666";
$b = "3.14159265358979323846264338";

if ($a == $b) {
echo "'$a' and '$b' are equal with ==.<br/>";
} else {
echo "'$a' and '$b' are NOT equal with ==.<br/>";
}

if ($a === $b) {
echo "'$a' and '$b' are equal with ===.<br/>";
} else {
echo "'$a' and '$b' are NOT equal with ===.<br/>";
}
?>

结果在

'3.14159265358979326666666666' and '3.14159265358979323846264338' are equal with ==.
'3.14159265358979326666666666' and '3.14159265358979323846264338' are NOT equal with ===.

注意事项

想做高精数学的你应该看看BC Math .

关于php - 错误的 PHP 字符串相等性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22709198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com