PHP number_format()和负值四舍五入为零的问题

PHP number_format()和负数值的问题四舍五入为零

众所周知,PHP函数number_format()将给定值舍入到所需的小数位数。

E. g .:
$ a = 2.658;
$ x = number_format($ a,2); // - > 2.66
$ x = number_format($ a,0); // - > 3

从我的角度来看,使用负数应该是0到0(零)的副作用很差。

E. g .:
$ a = -0.00000003;
$ x = number_format($ a,2); // - > -0.00
$ x = number_format($ a,0); // - > -0

你在输出前面看到减号吗? 这是由于PHP内部浮点运算的不准确而发生的,这是非常烦人的。

E. g .:
$ a = 7.8;
$ b = 7.79;
$ c = 0.01;
$ result = $ a - $ b - $ c;
$ x = number_format($ result,2); // - > -0.00

在这种情况下,减号(-0.00)是事实的结果,由于浮点不准确,结果为-0.00000000000000021337。 但是结果因php.ini和php版本的设置而异。 在我的测试中,我使用PHP 5.3,浮点精度为13位小数。

您可以通过在将值传递给函数之前将值舍入到所需的小数位置来轻松避免使用number_format()的行为。

E. g .:
$ a = -0.00000003;
$ x = number_format(round($ a,2),2); // - > 0.00
$ x = number_format(round($ a,0),0); // - > 0

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏