码迷,mamicode.com
首页 > 其他好文 > 详细

关于浮点型误差的解决方法

时间:2017-04-01 00:44:06      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:linux   数字   需要   com   浮点数   bcd   数据   处理   返回   

根据结果说明,作为浮点型数据,其精度已经损失了一部分,达不到完全精确。所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。
需要说明的是,这不是 PHP 的 问题,而是计算机内部处理浮点数的问题!在 C、JAVA 等语言中也会遇到同样的问题。

解决方法:需要将其控制在我们需要的精度范围内再行比较。

比如 bc 函数:

bcadd — 将两个高精度数字相加 
bccomp — 比较两个高精度数字,返回-1, 0, 1 
bcdiv — 将两个高精度数字相除 
bcmod — 求高精度数字余数 
bcmul — 将两个高精度数字相乘 
bcpow — 求高精度数字乘方 
bcpowmod — 求高精度数字乘方求模,数论里非常常用 
bcscale — 配置默认小数点位数,相当于就是Linux bc中的”scale=” 
bcsqrt — 求高精度数字平方根 
bcsub — 将两个高精度数字相减

关于浮点型误差的解决方法

标签:linux   数字   需要   com   浮点数   bcd   数据   处理   返回   

原文地址:http://www.cnblogs.com/liuxd/p/6654207.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!