PHP-php 中float 如何进行和int类型的对比

PHP-php 中float 如何进行和int类型的对比

清晨说ぺ晚安 发布于 2017-04-17 字数 93 浏览 1043 回复 2

大家都说最好不要用float和int类型比较。但是我想知道,如果真的需要比较的时候,该怎么办?

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

偏爱自由 2017-07-15 2 楼

不是用float和int比的问题,是float自己比较也会有精度问题
(0.1 + 0.7) * 10.0 == 8.0
这个也不见得就会正确

需要可靠比较的时候:

function IsEqual($a, $b)
{
return abs($a-$b) < 1e-20;
}

function IsGreaterEquals($a, $b)
{
return $a + 0.5e-20 >= $b
}

function IsGreater($a, $b)
{
return $a > $b + 0.5e-20;
}

如果需要保证> = <三个有且仅有一个成立的话,需要更精细的设定。

清晨说ぺ晚安 2017-06-10 1 楼

<?php
echo (int) ( (0.1+0.7) * 10 ); // 显示 7!
?>
php的浮点数精度存在问题