php中的round函数的bug
来源:互联网 发布:淘宝子账号有风险吗 编辑:程序博客网 时间:2024/03/29 17:33
我在写一个phpexcel操作数据时发现的,在php中,使用php中的round函数功能,并不完美,别的语言我不保证。
我用phpexcel在操作十几万的数据的时候吧,我发现有些数据并没有给我理想的四舍五入。问题出在。0.5这个问题上,有些测试可以进1,有些不可以,我搜不少资料,在一个日本人写的回复贴上也写有关于这个问题,php中的round并不能很好的完成我们想要的。我问了几个朋友,他们都不清楚,连一个做net的也不清楚。
我最后想有没有,我自己的想要的效果呢?于是我改写了round一点点,算打个小补丁吧。代码如下
我用phpexcel在操作十几万的数据的时候吧,我发现有些数据并没有给我理想的四舍五入。问题出在。0.5这个问题上,有些测试可以进1,有些不可以,我搜不少资料,在一个日本人写的回复贴上也写有关于这个问题,php中的round并不能很好的完成我们想要的。我问了几个朋友,他们都不清楚,连一个做net的也不清楚。
我最后想有没有,我自己的想要的效果呢?于是我改写了round一点点,算打个小补丁吧。代码如下
function round_all($manage,$parameter){
$tmp=$manage+1/pow(10,$parameter+1);
if(substr($tmp,strpos($tmp,'.')+$parameter+1)>5){
return round($tmp,$parameter);//用保留位的后一位加1,做round
}else{
return round($manage,$parameter);//如果等于小于5,做原值round
}
}
这个代码,就完成的保证了四舍五入,在要进位的后一位为5的时候,一定能够进1.原理很简单,主要思想是,在pow指数这里,保证了保留位的后一位加一,然后用得到的新数再用round处理,这样就排除了进位位,末尾一位杜绝为5不进1的情况。效果测试,可以。
这是一位php群里的朋友,我忘记叫什么名字了。谢谢他当时发了这个。
我测试的是round(145.51*1750,0); 实际算的结果是254642.5,函数运算的结果没有给我进一,而是直接砍掉0.5,导致缺少0.5
哎!随便说一句,不要都说国外做的东西,多好多有素质,中国人素质差了。看这个,这么多写编程的书,这么多年,包括官方的手册,都没有写,round其实内部是有bug的。都是自己测试后才发现有问题。作者的介绍没有一个字会告诉你,我的东西其实是有问题的。
讲的有点乱,顺序没有排好,主要的都说出来了。
白纸 2015年1月26写
这是一位php群里的朋友,我忘记叫什么名字了。谢谢他当时发了这个。
我测试的是round(145.51*1750,0); 实际算的结果是254642.5,函数运算的结果没有给我进一,而是直接砍掉0.5,导致缺少0.5
哎!随便说一句,不要都说国外做的东西,多好多有素质,中国人素质差了。看这个,这么多写编程的书,这么多年,包括官方的手册,都没有写,round其实内部是有bug的。都是自己测试后才发现有问题。作者的介绍没有一个字会告诉你,我的东西其实是有问题的。
讲的有点乱,顺序没有排好,主要的都说出来了。
白纸 2015年1月26写
0 0
- php中的round函数的bug
- Delphi中取整函数Round的Bug解决
- PHP函数strip_tags的一个bug浅析
- c++类的初始化函数中的bug
- PHP round() 函数
- PHP 四舍五入函数 round()
- sql 中的round函数的运用
- ORACLE中的ROUND函数
- MATLAB中的round函数
- MATLAB中的round函数
- MATLAB中的round函数
- SQL中的ROUND函数
- mysql中的round函数
- Oracle中的Round函数
- mysql中的round函数
- php is_writeable函数bug问题
- 【转】php中iconv函数的一个小bug
- PHP round()函数进位问题
- 老北京豆腐脑做法
- 字节流与字符流的区别详解
- 浴室细菌多清洁妙招大公开
- 主妇注意:猛火炒菜 易患肺癌
- iOS第三方MagicalRecord
- php中的round函数的bug
- 执着的人
- $取shell参数
- XXX is parsed as a non-type, but instantiation yields a type 错误解决办法
- 浅谈iOS中MVVM的架构设计与团队协作
- GDI+ for VC6 MFC
- 小怪物项目重制计划第一天
- XML Schema基本用法
- 显式和隐式启动activity