当前位置:编程学习 > php >>

php取小数的函数Round和FormatNumber区别比较

Round 函数
返回按指定位数进行四舍五入的数值。
Round(expression[, numdecimalplaces])
参数:
Expression  必选项 数值表达式 被四舍五入。
Numdecimalplaces  可选项。数字表明小数点右边有多少位进行四舍五入。如果省略,则 Round 函数返回整数。
注:按平时“四舍五入”理解其实是不准确的!
其实应该是四舍六入五成双,具体含义看下面解释:
四 舍六入五成双是一种比较精确比较科学的计数保留法,是一种数字修约(舍入)规则,也即“4舍6入5凑偶”。这里“四”是指≤4 时舍去,"六"是指≥6时进上,"五"指的是根据5后面的数字来定,当5后有数时,舍5入1;当5后无数或为0时,需要分两种情况来讲:①5前为奇数,舍 5入1;②5前为偶数,舍5不进。

举例,用上述规则对下列数据保留3位有效数字(小数点后两位):
9.8249=9.82, 9.82671=9.83
9.8350=9.84, 9.8351 =9.84
9.8250=9.82, 9.82501=9.83

从统计学的角度,“四舍六入五成双”比“四舍五入”要科学,在大量运算时,它使舍入后的结果误差的均值趋于零,而不是像四舍五入那样逢五就入,导致结果偏向大数,使得误差产生积累进而产生系统误差,“四舍六入五成双”使测量结果受到舍入误差的影响降到最低。
例如:1.15+1.25+1.35+1.45=5.2,若按四舍五入取一位小数计算:
1.2+1.3+1.4+1.5=5.4
按“四舍六入五成双”计算,1.2+1.2+1.4+1.4=5.2,舍入后的结果更能反映实际结果。

FormatNumber 函数
返回表达式,此表达式已被格式化为数值。
FormatNumber(
  expression [,NumDigitsAfterDecimal [,IncludeLeadingDigit [,UseParensForNegativeNumbers [,GroupDigits]]]]
)
参数:
Expression 必选项。要被格式化的表达式。
NumDigitsAfterDecimal 可选项。指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置。
IncludeLeadingDigit 可选项。三态常数,指示是否显示小数值小数点前面的零。
UseParensForNegativeNumbers  可选项。三态常数,指示是否将负值置于括号中。
GroupDigits 可选项。三态常数,指示是否使用计算机区域设置中指定的数字分组符号将数字分组。
举例:
FormatNumber(8.38502,2)
FormatNumber(8.37502,2)
FormatNumber(8.3850,2)
FormatNumber(8.3750,2)
FormatNumber(8.3748,2)
结果是:
8.39
8.38
8.39
8.38
8.37

若要实现四舍五入,还是用FormatNumber函数更准确些!

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,