2011-09-14 78 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]); 
} 

希望它會幫助你。