10.00 => 10,
12.88 => 12.88
1.80 => 1.8
使用 rtrim 和 number_format
这种方法先格式化数字,然后去除后面的 .00
function formatNumber($number) {
// 使用 number_format 将数字格式化为带有小数点的字符串
$formatted = number_format($number, 2, ‘.’, ”);
// 使用 rtrim 去除末尾的 .00
return rtrim($formatted, ‘0’) . (substr($formatted, -1) === ‘.’ ? ” : ”);
}
// 示例
echo formatNumber(10.00); // 输出: 10
echo “\n”;
echo formatNumber(12.19); // 输出: 12.19
使用类型转换
你也可以简单地将浮点数转换为字符串,PHP 会自动去掉多余的零:
function formatNumber($number) {
// 将数字转换为字符串
return (string)$number + 0; // 通过加0,将其转换为浮点数
}
// 示例
echo formatNumber(10.00); // 输出: 10
echo “\n”;
echo formatNumber(12.19); // 输出: 12.19
在 PHP 中,将浮点数转换为字符串时,确实可能会出现精度问题,导致你看到诸如 .9999
或 1.0000000000001
这样的结果。这是因为浮点数在计算机内部使用二进制表示,某些十进制小数无法精确表示为二进制,从而可能引发精度问题。
为了避免这种精度问题,使用number_format()
函数可以格式化数字为字符串,指定小数位数,并避免浮点数精度问题
使用 sprintf
function formatNumber($number) {
return sprintf(‘%.2f’, $number) + 0; // 将其格式化为带两位小数的字符串
}
// 示例
echo formatNumber(10.00); // 输出: 10
echo “\n”;
echo formatNumber(12.19); // 输出: 12.19