strval()的基本用法是直接將浮點數轉換成字符串,但它會保留浮點數的全部有效數字,無法限制小數位數。
<?php
$num = 3.1415926;
echo strval($num); // 輸出 "3.1415926"
?>
雖然簡單,但它無法控制保留幾位小數。
number_format()是PHP 內置函數,專門用來格式化數字,可以指定小數位數。
<?php
$num = 3.1415926;
$formatted = number_format($num, 2); // 保留2十進制數字,結果是字符串
echo strval($formatted); // 輸出 "3.14"
?>
number_format()本身返回的就是字符串,這裡用strval()包裹是為了符合題目要求,但其實沒必要。
sprintf()也是格式化字符串的常用方法,可以靈活指定保留的小數位數。
<?php
$num = 3.1415926;
$formatted = sprintf("%.3f", $num); // 保留3十進制數字,返回字符串
echo strval($formatted); // 輸出 "3.142"
?>
同樣地, sprintf()返回的已經是字符串,使用strval()只是多餘的包裹。
有時候,我們想先用round()函數處理小數點,再轉成字符串。
<?php
function floatToString($num, $decimals) {
$rounded = round($num, $decimals);
return strval($rounded);
}
echo floatToString(3.1415926, 2); // 輸出 "3.14"
echo "\n";
echo floatToString(3.1000, 2); // 輸出 "3.1",注意沒有補零
?>
這裡, round()保證了數值的精度,但不會自動補足小數位數中的零。
如果需要保留固定小數位數,並自動補零,可以用number_format()是最簡潔的方式:
<?php
$num = 3.1;
echo strval(number_format($num, 3)); // 輸出 "3.100"
?>
strval()直接轉換無法控制小數位數。
推薦先用number_format()或sprintf()格式化數字,得到帶有指定小數位數的字符串,再用strval()包裹(其實不包裹也行)。
round()可用於四捨五入,但不會自動補零。
最終選擇哪種方法,根據是否需要補零及格式要求來定。