php类型的函数声明中的错误参数声明

发布于 2025-02-05 12:21:53 字数 379 浏览 2 评论 0原文

案例:图书馆使用这样的代码:

function setUnitPrice(?int $unitPrice)
    {
        return $unitPrice;
    }

当我喜欢这样的代码:

$var1 = 0.58;
$var1 = $var1 * 100;
echo setUnitPrice($var1);

它以57为57,php 7.2 使用PHP 8显示警告 弃用:从Float 57.9999999999999到INT的隐性转换,

我从来没有需要在PHP中绕过Float数字,可以解释这一点吗? 要解决此问题,需要具有Intaval(圆($ var1)),但这没有任何意义

Case: library uses code like this:

function setUnitPrice(?int $unitPrice)
    {
        return $unitPrice;
    }

and when I do like this:

$var1 = 0.58;
$var1 = $var1 * 100;
echo setUnitPrice($var1);

it comes out as 57 with php 7.2
with php 8 it shows warning of
Deprecated: Implicit conversion from float 57.99999999999999 to int loses precision

I have never needed to round the float numbers in php before, can anybody explains this ?
to fix this, needs to have intaval(round($var1)) but this does not make any sense

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

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

评论(2

我一向站在原地 2025-02-12 12:21:53
$var1 = 0.58;
$var1 = $var1 * 100;
echo setUnitPrice(round($var1));

那是我的命题

$var1 = 0.58;
$var1 = $var1 * 100;
echo setUnitPrice(round($var1));

That is my proposition

独夜无伴 2025-02-12 12:21:53

$ var1已被解释为浮点。如果您做一个var_dump,您将看到。
但是你可以做

echo setUnitPrice((integer)$var1);

$var1 has been declerated as float. If you do a var_dump of it, you will see.
But you can do

echo setUnitPrice((integer)$var1);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文