如何在浮点数中保留两位数(PHP)

Posted

技术标签:

【中文标题】如何在浮点数中保留两位数(PHP)【英文标题】:How to keep two digits in float number (PHP) 【发布时间】:2012-05-01 12:44:00 【问题描述】:

如何在 php 中将3.0000000054978E+38 之类的数字变成3.00

非常感谢!

【问题讨论】:

round()它us3.php.net/manual/en/function.round.php 等等,3.0XE+38不是一个很大的数字吗? 您尚未分享将3.0000000054978E+38 制作为3.00 的标准。通常这是通过乘法/除法来完成的。 【参考方案1】:

您不能使用round 来解决这个问题,因为它是科学计数法中的数字。但是,您可以使用substr

$i = 3.0000000054978E+38;
$i = substr($i, 0, 2); // $i is now the string 3.00
echo( number_format($i+1,2) );  // Will output 4.00

【讨论】:

Round 确实适用于科学记数法。圆形和浮动没有错。 $i = 3.0000000054978E+38; echo( round( $i, 2) ); 在 Windows 上输出 3.0000000054978E+38,而不是 3.00 @Watcher:当然,因为它做了它已经记录的事情。但很明显 TS 不是要求字符串操作,不是吗? OP 要求输出 3.00,AFAIK 这是做到这一点的唯一方法 @watcher:是的,如果您将输入视为常量,那么您的输入并没有错,但是it's not the only way to do it, round works perfectly well。【参考方案2】:

如果您正在寻找以格式化方式输出的一小部分数字:

$number = 3.0000000054978E+38;
printf('%.2f', $number / 1E+38); # 3.00

【讨论】:

我不太确定它在 TS 眼中是否更好,但仍不确定 Acubi 到底在寻找什么。【参考方案3】:

您可以只使用round,如round($floating_number, 2)

【讨论】:

只是出于兴趣,这比 number_format(3.0023123121, 2); 有什么优势? number_format 强制使用小数位;实际上在这种情况下使用可能会更好:P 那么值得提出答案。塔。【参考方案4】:

sprintf() 始终为您提供指定的小数点位数,如果您需要的话。

sprintf('%0.2f', 3.0000000);

如果您回显它,将显示3.00

【讨论】:

以上是关于如何在浮点数中保留两位数(PHP)的主要内容,如果未能解决你的问题,请参考以下文章

用C语言怎么实现浮点数的四舍五入,保留两位小数点

如何在浮点数后设置7位精度[重复]

c语言中保留两位小数如何写?

如何在Oracle数据库中保留小数点后两位 而且在java中保留两位插入到数据表中

如何在Oracle数据库中保留小数点后两位 而且在java中保留两位插入到数据表中

c++中如何输出保留三位小数的浮点数