在PHP中,我如何将数字格式化为只显示一位小数?

20

有人知道在php中如何格式化数字并将其限制为仅显示1个小数位吗?

例如:

如何将数字2.10格式化为2.1?


1
一个重复的问题:https://dev59.com/73I-5IYBdhLWcg3wKE6x - jzd
6个回答

30

使用PHP的number_format函数。

http://php.net/manual/en/function.number-format.php

例子:

$one_decimal_place = number_format(2.10, 1);

如果需要将其转换回浮点数:

$the_float_value = floatval($one_decimal_place);

此外,这篇文章是一个关于不同小数字符号和分隔符风格的良好参考。


去掉第一个参数周围的引号。第一个参数是浮点数,不是字符串。 - Evan Mulawski
1
它只在2.10的情况下进行校正,但如果值为2.98,则会将其转换为3.0,因此这不是正确答案。以下是正确答案:echo bcdiv(5.98735, 1, 1); // 5.9 echo bcdiv(5.98735, 1, 2); // 5.98 - Pawan Kumar

8
您使用round函数。
echo round(3.4445, 1); // 3.4

不会将完整的整数数字(3)转换为(3.0)。相反,您会得到3 - Jack

4
数字格式化可以帮助您实现这一点。
$num = 2.10;
number_format($num, 1);

PHP: number_format


1

你可以使用 round() 函数并设置精度为1,但请注意有些人可能会看到比预期更长的结果。你也可以使用 printf() 或者 sprintf() 并设置格式为 "%.1f"


1
使用 PHP 原生函数 bcdiv
echo bcdiv(5.98735, 1, 1);  // 5.9
echo bcdiv(5.98735, 1, 2);  // 5.98
echo bcdiv(5.98735, 1, 3);  // 5.987
echo bcdiv(-5.98735, 1, 1); // -5.9
echo bcdiv(-5.98735, 1, 2); // -5.98
echo bcdiv(-5.98735, 1, 3); // -5.987

bcdiv - 除两个任意精度的数字。每次将值除以1($num2 = divisor)并使用第三个变量有点过度。 - Aldo

0

使用number_format函数。 number_format("2.10", 1)就可以实现这个功能。这里是相关文档。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接