提问人:gray_15 提问时间:6/8/2022 更新时间:6/8/2022 访问量:40
函数参数的PHP类型声明中的错误
bug in php type declaration of of function parameter
问:
案例:库使用如下代码:
function setUnitPrice(?int $unitPrice)
{
return $unitPrice;
}
当我这样做时:
$var1 = 0.58;
$var1 = $var1 * 100;
echo setUnitPrice($var1);
它以 PHP 7.2 的形式显示为 57 在 PHP 8 中,它显示警告 已弃用:从 float 57.99999999999999 到 int 的隐式转换会失去精度
我以前从来不需要在 php 中对浮点数进行四舍五入,有人可以解释一下吗? 要解决这个问题,需要有 intaval(round($var 1)),但这没有任何意义
答:
0赞
svgta
6/8/2022
#1
$var 1 已被取消为浮动。如果你做一个var_dump,你会看到。 但你可以做到
echo setUnitPrice((integer)$var1);
评论
0赞
gray_15
6/9/2022
这是行不通的,还是少了一个
0赞
Dago Dassi Ange
6/8/2022
#2
$var1 = 0.58;
$var1 = $var1 * 100;
echo setUnitPrice(round($var1));
这是我的主张
评论
0赞
gray_15
6/9/2022
这行得通。但我真的觉得这类问题不属于php,而更多的是javascript世界的问题。我从事php编程已有15年了,以前从未遇到过这种问题。
评论