gpt4 book ai didi

php - 为什么 `intval(19.9 * 100)` 等于 `1989` ?

转载 作者:可可西里 更新时间:2023-10-31 22:09:00 25 4
gpt4 key购买 nike

男孩,这个真的很奇怪。我希望下面的代码打印 1990,但它打印的是 1989!

$val = '$19.9';

$val = preg_replace('/[^\d.]/','',$val);
$val = intval($val * 100);

echo $val;

到底为什么会这样?

编辑:和这段代码:

$val = '$19.9';
$val = preg_replace('/[^\d.]/','',$val);
echo $val . "<br>";
$val = $val * 100;
echo $val . "<br>";
$val = intval($val);
echo $val;

打印:

19.9
1990
1989

为什么 intval(1990) 等于 1989???

最佳答案

这是 PHP 和许多其他语言中 float 固有的精度问题。此错误报告在转换为 int 的上下文中对此进行了一些讨论:

http://bugs.php.net/bug.php?id=33731

尝试使用 round($val * 100) 代替。

关于php - 为什么 `intval(19.9 * 100)` 等于 `1989` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2497420/

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