社区
基础编程
帖子详情
浮点数相减问题
zhwb36
2006-01-03 09:57:26
<?
$a = 15521.42;
$b = 15480.3;
echo $a-$b;
?>
在PHP4.0环境下,不支持BCMath,出来的结果竟是41.120000000001,不知道是否与BCMath有关?
有类似情况的朋友,说说你们的解决方法呢?
实在是太奇怪了,这样的数据也不大,精度也不高,在PHP5。0下是没有这个问题的
...全文
347
4
打赏
收藏
浮点数相减问题
在PHP4.0环境下,不支持BCMath,出来的结果竟是41.120000000001,不知道是否与BCMath有关? 有类似情况的朋友,说说你们的解决方法呢? 实在是太奇怪了,这样的数据也不大,精度也不高,在PHP5。0下是没有这个问题的
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zalvsa
2006-01-03
打赏
举报
回复
有时候经过round运算后的值会变成科学记数法的形式。
hsboy
2006-01-03
打赏
举报
回复
正常的,这与计算机内部浮点数表示形式有关。浮点数计算不可能打到100%精度,这一点不光PHP中存在。
正确方法是计算完成后使用round函数取得想要精度的浮点数,比如
<?
$a = 15521.42;
$b = 15480.3;
echo round($a-$b, 2);
?>
会输出41.12
zalvsa
2006-01-03
打赏
举报
回复
PHP的运算有时候确实会出现类似的问题。有时候我用number_format格式化一下就好了。不过我也没找到原因。。。。。。
hsboy
2006-01-03
打赏
举报
回复
呵呵,正确的方法就是用round函数,number_format返回结果是字符串,也就是说返回的是字符串“41.12”而不是数字41.12,如果这个结果还要进行其他运算而不是直接进行输出,则使用number_format的效率会低很多。
你可以在中间过程使用round函数,输出前再使用number_format确保输出的格式。
解决JS
浮点数
(小数)计算加减乘除的BUG
解决JS
浮点数
(小数)计算加减乘除的BUG
float_add.v
verilog实现
浮点数
加法运算,采用单精度浮点型格式,实现硬件
浮点数
相减
,并且可以根据需要更改其浮点型减法的精度
Modbus协议讲解及实现
5、掌握Modbus协议下,负数,
浮点数
等处理方法。 讲师简介 许孝刚,山东大学工程硕士,副高职称,技术总监。 10多年丰富嵌入式系统开发经验,国家软考“嵌入式系统设计师”。 2017年获得“华为开发者社区杰出贡献者...
VB.NET日期时间值建立方法
组合一个日期/时间值 在VB.NET中可以用几种方法组合一个日期/时间值。列表A说明了几种实现相同功能的方法。 ◆第一个消息框将显示:dtDate1: 1/2/2007 12:00:00 A.M. ◆第二个消息框将显示:dtDate2: 1/...
js
浮点数
精确计算(加、减、乘、除)
本篇文章主要介绍了js
浮点数
精确计算(加、减、乘、除) 需要的朋友可以过来参考下,希望对大家有所帮助
基础编程
21,887
社区成员
140,364
社区内容
发帖
与我相关
我的任务
基础编程
从PHP安装配置,PHP入门,PHP基础到PHP应用
复制链接
扫一扫
分享
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章