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() 可用于四舍五入,但不会自动补零。
最终选择哪种方法,根据是否需要补零及格式要求来定。