浮点数最多两位十进制PHP

时间:2020-01-19 15:03:18

标签: php floating-point

我知道这个问题很基本,但似乎对我没有任何帮助。

我有一个数字(浮点数或整数),我希望将其格式化为小数点后两位。为此,我使用了PHP函数number_format,但是它将我的数字转换为字符串。

要将其转换回浮点型,我正在使用(float)floatval()。但是这些函数只是将数字转换为从字符串浮点数后才将其截断。

这是我的代码

$revenue_sum = array_sum(array_column($val2, 'weighted_revenue'));  //23722


$test = number_format($revenue_sum, 2);            //"23,722.00"
$test = (float)number_format($revenue_sum, 2);     //23.0
$test = floatval(number_format($revenue_sum, 2));  //23.0

我希望$ revenue_sum = 23722的$ test为23722.00

如果$ revenue_sum = 2372.2,则$ test应为2372.20

3 个答案:

答案 0 :(得分:0)

number_format()函数可以按如下方式使用:

echo number_format($revenue_sum, 2,'.',''); // will return 23722.00 for the $revenue_sum = 23722

您正在尝试使用','值键入类型转换,它会截断字符串。

答案 1 :(得分:0)

您可以尝试

<?php echo sprintf("%2.2f", 8900.258); ?>

,它将输出为

8900.26

答案 2 :(得分:0)

如果将浮点值分配给变量,则会将其转换为内部二进制格式(通常使用IEEE 754)。并非所有可能的值都有内部表示形式。因此,在扫描文本时,浮点数将四舍五入到最接近的可能值。因此,例如1.23舍入为1.22999999999999998

由于内部表示,1001e2100.0100.0000之间没有区别。

并且在不使用任何格式指令的情况下打印浮点值时,PHP会猜测一个好的格式并四舍五入一些数字。因此1.22999999999999显示为1.23(在不同的系统上可能会有所不同)。

通常:只要您在计算,格式化就没有关系。最好是在调试时忽略十进制片段。但是在打印(=转换为文本)时,请使用format_number()之类的功能或任何printf()函数。

要更加务实:

相关问题