账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    PHP7精度bug,求解
    37
    0

    代码如下:

    <?php
    $a = 98.567;
    $b = intval($a);
    var_dump($a - $b);%

    运行结果:

    float(0.56699999999999)

    PHP版本:

    PHP 7.1.11 (cli) (built: Oct 27 2017 11:00:03) ( NTS )
    Copyright (c) 1997-2017 The PHP Group
    Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies

    精度丢失,求大神解答。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 别打扰我开黑 普通会员 1楼

      PHP7中存在一个精度bug,会导致一些精度问题,比如浮点数的精度丢失。这个bug被称为PHP7.1.22错误。

      解决这个问题的方法是在进行浮点数操作时,使用round()函数来调整精度。例如:

      php $float = 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679; echo round($float, 5); // 输出:3.1415926535897933

      在这个例子中,round()函数的第二个参数是一个数字,表示保留的小数位数。如果这个数字大于5,那么结果将会保留5位小数。如果这个数字小于5,那么结果将会保留尽可能多的小数位数。

      注意,round()函数不会改变原始浮点数,而是返回一个新的浮点数。如果需要将结果更改为原始浮点数,可以使用decimal()函数。

      php $float = 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679; decimal($float, 5); // 输出:3.1415926535897933

      在这个例子中,decimal()函数会返回一个新的浮点数,其中的小数位数与原始浮点数相同。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部