2013-04-16 27 views
0

我想顯示浮點數的一個小數,如果它有非零小數。number_format只有不爲零

什麼是最優雅的方式來做到這一點?

100.00 -> 100 
99.45 -> 99.5 
99.44 -> 99.4 
11.30 -> 11.3 
2.00 -> 2 
11.02 -> 11 
13.05 -> 13.1 
+0

什麼你到目前爲止已經試過?你卡在哪裏?你的代碼在哪裏? – Rikesh

+0

@BenM默認舍入是'PHP_ROUND_HALF_UP'。 – cmbuckley

回答

2
ini_set("precision", 8); /* low enough; eventually if needed */ 
var_dump((string)round($float, 1)); 

本應該做的

+0

ini_set(「precision」,8);/*足夠低*/ var_dump((string)round('99 .45'));將輸出99不是99.5 – Timur

+0

@acidrat我已經編輯了我的答案:使用round($ float,1) – bwoebi

+0

它的工作原理,唯一的問題是我必須設置精度。 – Timur

0
$rounded = (!is_int($number)) ? round($number, 1) : round($number); 

我已經測試了上面的樣本數據和輸出任務如下:按以下方式

100.00 > 100 
99.45 > 99.5 
99.44 > 99.4 
11.30 > 11.3 
2.00 > 2 
11.02 > 11 
13.05 > 13 
+0

也有作品。謝謝! – Timur

3

使用。

$x = "99.44"; // example value 
$y = number_format((float)$x, 1, '.', ''); 
echo str_replace(".0","",$y); 
+0

它是否適用於'11.30'? – fedorqui

+1

是的,它的結果是11.3 ....我檢查了所有上述值,它的工作原理如下。 – sandy

+0

作品,謝謝 – Timur

0

我更喜歡這種方式:

$num = 100.1;
echo (floor($num) == $num) ? $num : number_format($num,1);

+0

不是真的。 $ num = 2.00返回2.00,您的示例返回100.0 – Timur

+0

確定嗎?我已經用您在原始文章中給出的例子對此進行了測試,並且答案完全匹配。 – user352891

+0

http://codepad.viper-7.com/ewZYUx – Timur