浮点数高达两位十进制PHP
我知道这个问题很基本,但对我来说似乎没什么用 我有一个数字(浮点数或整数),我想将其格式化为两个小数点。为此,我使用PHP函数浮点数高达两位十进制PHP,php,floating-point,Php,Floating Point,我知道这个问题很基本,但对我来说似乎没什么用 我有一个数字(浮点数或整数),我想将其格式化为两个小数点。为此,我使用PHP函数number\u format,但它将我的数字转换为字符串 要将其转换回float,我使用(float)或floatval()。但这些函数只是在将数字从字符串转换为浮点后截断数字 这是我的代码 $revenue_sum = array_sum(array_column($val2, 'weighted_revenue')); //23722 $test = numb
number\u format
,但它将我的数字转换为字符串
要将其转换回float,我使用(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\u sum=2372.2,则$test应为2372.20
echo number_format($revenue_sum, 2,'.',''); // will return 23722.00 for the $revenue_sum = 23722
您正在尝试使用“,”值键入cast,它正在截断字符串。您可以尝试此操作
将输出为
8900.26
如果将浮点值指定给变量,则该变量将转换为内部二进制格式(通常使用IEEE 754)。并非所有可能的值都具有内部表示形式。因此,在扫描文本时,浮点值被舍入到最接近的可能值。例如,将
1.23
四舍五入为1.229999999998
由于内部表示,在100
或1e2
或100.0
或100.0000
之间没有区别
当在没有任何格式化指令的情况下打印浮点值时,PHP会猜测一个好的格式并舍入一些数字。因此1.2299999999999
显示为1.23
(不同系统可能会有所不同)
一般来说:只要你在计算,格式就不重要了。最好在调试时忽略十进制片段。但在打印(=转换为文本)时,请使用诸如format_number()
之类的函数或任何printf()
函数
更实际一点:一旦一个数字是浮点数,多余的小数位就没有意义了,它们只有在显示值时才有意义-这就是
number\u format()
为您所做的。将echo sprintf
替换为printf