如何在浮点数中保留两位数(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)的主要内容,如果未能解决你的问题,请参考以下文章
如何在Oracle数据库中保留小数点后两位 而且在java中保留两位插入到数据表中