2013-09-28 55 views
1

number_format愚蠢回合數。有沒有簡單的方法來關閉舍入?我與隨機生成的數字的工作,我能得到的東西像...PHP - number_format默認發出

42533 * 0.003 = 127.599,或
42533 * 0.03 = 1275.99,或者
42533 * 0.3 = 12759.9

我需要number_format(或別的東西)來表示美國傳統格式(逗號分隔數千)和而不是的小數點後的結果。

任何想法?

+0

您能否請添加預期結果? –

+0

@AmalMurali:我希望** 12759.9 **顯示爲** 12,759.9 **。 – gtilflm

回答

1

number_format的第二個參數是數字中的小數位數。最簡單的方法是將其視爲字符串(按照this question)。傳統的美國格式是默認行爲,所以你不需要指定剩餘的參數。

$num_decimals = strlen(substr(strrchr($number, "."), 1)); 
$formatted_number = number_format($number, $num_decimals); 
+0

似乎工作......謝謝。即使它是**延遲**,我們甚至必須經歷這個。這是愚蠢的,爲什麼你不能關閉number_format舍入。 – gtilflm

+0

這確實有效,但它給了我7.5的值而不是7.50。對此有何建議? – socca1157

0

如果有人對此感興趣,我寫了一個小函數來解決這個問題。

以信譽喬爾·欣茨上面,我想出了...

function number_format_with_decimals($value, $round_to){ 
    //$value is the decimal number you want to show with number_format. 
    //$round_to is the deicimal place value you want to round to. 

    $round_to_decimals = strlen(substr(strrchr($value, "."), $round_to)); 
    $ans = number_format($value, $round_to); 

    return $ans; 
} 
0

我嘗試了這些解決方案,但什麼結束了我的回答是這樣的:

$output=money_format('%!i', $value); 

這給了你類似3,234.90而不是3,234或3,234.9