php怎么对小数进行计算,PHP 小数的计算方式太坑爹了吧?

if(0.030 != (0.530-0.500+0+0))

{

$s = 0.530-0.500+0+0;

$s = 0.03 - $s;

}

这居然不相等??

相减后居然不是0

这PHP 是外星计算法吗?

回复讨论(解决方案)

请你补习一下有关浮点数的知识

即使我

$f = (0.530-0.500+0+0)*1000;

$a = (0.030*1000);

$s = (0.530-0.500+0+0)*1000;

$ssa = $a - $s;

这样也错啊

请你补习一下有关浮点数的知识

$f = (0.530-0.500+0+0)*1000;

$a = (0.030*1000);

$ssa = doubleval($a) - doubleval($f);

这样写都错...... 他是怎么计算的啊?

怎么说呢

简单的十进制分数不能在丢失一点点精度的情况下转化为二进制的格式,浮点数永远不会精确到最后一位,那么在PHP中,简单的浮点数运算是很有可能丢失精度,从而造成计算的结果出现混乱

怎么说呢

简单的十进制分数不能在丢失一点点精度的情况下转化为二进制的格式,浮点数永远不会精确到最后一位,那么在PHP中,简单的浮点数运算是很有可能丢失精度,从而造成计算的结果出现混乱

那像这样的计算,应该怎么来做?

请你补习一下有关浮点数的知识

$f = (0.530-0.500+0+0)*1000;

$a = (0.030*1000);

$ssa = doubleval($a) - doubleval($f);

这样写都错...... 他是怎么计算的啊?

这个不光php这样,JAVA也有着现象的

所以PHP要解决浮点数的办法有2个

一个是

if(0.030 != (0.530-0.500+0+0))

{

$s = 0.53-0.5;

$s = 0.03-"$s";

echo $s;

}

把变量的那个用双引号加起来就OK了

还有的一个办法就是用round函数了

看来你还得补习一下“有效数”的相关知识

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值