我想在PHP中使用number_format
函數。例如:浮點數格式
$number = 234.51;
echo number_format($number,2);
這適用於浮點數,但我想用它來表示不同的數字。如果一個數字是十進制數,並且沒有任何浮點數,則顯示如下:145.00。我怎樣才能解決這個問題?我的意思是我想根據需要顯示儘可能多的浮點數,而不是更多。
我想在PHP中使用number_format
函數。例如:浮點數格式
$number = 234.51;
echo number_format($number,2);
這適用於浮點數,但我想用它來表示不同的數字。如果一個數字是十進制數,並且沒有任何浮點數,則顯示如下:145.00。我怎樣才能解決這個問題?我的意思是我想根據需要顯示儘可能多的浮點數,而不是更多。
我想我不能讓我從number_format想,所以我做這個工作得很好:
public function floatNumber($number)
{
$number_array = explode('.', $number);
$left = $number_array[0];
$right = $number_array[1];
return number_format($number, strlen($right));
}
感謝名單所有您的答覆。
你可以縮短並寫下:'list($ left,$ right)= explode('。',$ number,2);'。 – 2014-01-27 20:59:48
調查printf
和sprintf
函數而不是number_format
。
它們提供了根據需要格式化數字的功能。
printf("%d", $int)
將適用於十進制整數。
printf("%4.2f", $float)
將適用於有兩位小數的浮點數。
number_format
似乎是用於貨幣輸出的國際化,但我不認爲這是你想要的,因爲你提到的十進制「整體」的數字。
我不知道一個更好的方式來做到這一點,但你可以比較的類型,如下面的代碼:
$number = 234.159;
if(is_float($number)) {
echo number_format($number, 2);
}else {
echo $number;
}
我相信這是首選的方式,如果你不需要打印這個。 – Dewsworld 2012-03-01 04:23:48
雖然這是一個有點快速和骯髒的,你可以簡單地做一個..
str_replace('.00', '', number_format($potentialFloat, 2));
遠非理想,但有效。
我認爲關鍵問題是定義需要多少位置。你會定義13.01爲13,因爲第一個小數是0嗎?由於printf和數字格式需要你知道多少個小數,我不知道這對你有用。
也許像這樣(這是很多功能,但查找第一個0,然後返回截斷的字符串)。是的,這是密集型的,但它可能是最適合你的方式。
function show_number($number, $max = 8){ if(strpos($number, '.')){ $decimal = strpos($number, '.'); if(strpos($number, '.0')){ return substr($number, 0, $decimal);//returns whole if zero is first } else { if(strpos(substr($number, $decimal, $max), '0')){ $zero = strpos(substr($number, $decimal, $max), '0'); return substr($number, 0, $decimal+$zero);//returns number w/0 first zero } else { return substr($number, 0, $decimal+$max+1); //returns number with max places } } } else { return $number; //returns number if no decimals } }
rtrim(number_format($number, 2), '0.');
我使用以下方法來擺脫尾隨零:
// Trims a floating point number so there are no trailing zeros. For example:
// 1.00 -> 1
// 1.10 -> 1.1
function trimFloatingPoint($input) {
$strNum = strval($input);
while(substr($strNum, -1, 1) == '0')
$strNum = substr($strNum, 0, strlen($strNum) -1);
// Trailing zeros are gone. How about the trailing period?
if(substr($strNum, -1, 1) == '.')
$strNum = substr($strNum, 0, strlen($strNum) -1);
return $strNum;
}
$x = $x - floor($x)
會給你正確的浮點...
您是否嘗試過使用圓形( )而不是number_format()? – 2009-11-14 20:11:48
在我的理解中,number_format只能用於顯示目的。 – kta 2014-11-27 11:51:54