2011-09-14 72 views
0

我想要一个PHP数字格式化至少2位小数位和最多8位小数位。你怎么能正确地做到这一点。高级PHP数字格式化

更新:对不起,我的问题是说我有号码“4”。我希望它显示为“4.00”,如果我有“2.000000001”,那么它显示为“2.00”或者如果我有“3.2102”它将显示为这样。 iPhone上有一个NSNumber格式化程序,PHP中有相同的格式化程序。

+2

您如何建议决定给定数字使用的小数位数? – Hammerite

+0

“2.120000001”显示多少个? – CanSpice

+0

对不起,我的问题是说我有号码“4”。我希望它显示为“4.00”,如果我有“2.000000001”,那么它显示为“2.00”或者如果我有“3.2102”它将显示为这样。 iPhone上有一个NSNumber格式化程序,PHP中有相同的格式化程序。 – macintosh264

回答

7

这格式化$ N号8位小数,然后删除尾随零,最多6次。

$s = number_format($n, 8); 
for($i=0; $i<8-2; $i++) { 
    if (substr($s, -1) == '0') 
     $s = substr($s, 0, -1); 
} 
print "Number = $s"; 
+0

哇!这是聪明的让我试试吧 – macintosh264

+0

像一个魅力工作非常感谢 – macintosh264

+0

这是否工作,如果数量是40.0012?也解释你的答案多一点,而不是只发布代码 – JPM

0

使用sprintf()到数字格式到一定的小数位数:

$decimal_places = 4; 
$format = "%.${decimal_places}f"; 
$formatted = sprintf($format,$number); 
+0

对不起,我的问题是说我有数字“4”,我希望它显示为“4.00”,如果我有“2.000000001”,那么它显示为“2.00”或者如果我有“3.2102”它会在iPhone上有一个NSNumber格式化程序,在PHP中有什么相同的内容 – macintosh264

0

检查数字格式功能:

<?php 
$num = 43.43343; 
$formatted = number_format(round((float) $num, 2), 2); 
?> 

http://php.net/manual/en/function.number-format.php

+2

这不是一个真正的答案 –

+0

你可以将()数字(http://www.php.net/manual/en/function .round.php),然后用number_format()函数添加格式 –

+1

你应该提供一个代码示例 –

0

我不明白你为什么要显示数字以达到不一致的准确度。我不明白你在评论中想要描述什么样的模式。

但是,让我们假设您需要以下行为:您希望将数字表示为8位小数,如果结果中有多于2个尾随零,则需要删除多余的零。这不难编码,而不是以英文表达。在伪代码:

$mystring = string representation of number rounded to 8 decimal places; 
while (last character of $mystring is a 0) { 
    chop off last character of $mystring; 
} 
+0

我正在格式化一个比特币金额,女巫计算出小数点后8位,并始终显示至少2位小数位。 – macintosh264

0

使用的preg_match先手与结束零,然后RTIM它

<?php 
$nn = number_format(10.10100011411100000,13); 
preg_match('/[0]+$/',$nn,$number); 
if(count($number)>0){ 
    echo rtrim($nn,$number[0]); 
} 

希望它会帮助你。