当10000-100时,结果应该是9900.
我用的时候试过了: -
< ?php
$num1 = number_format(round(10000,1),2);
$num2 = number_format(round(100,1),2);
echo $num1 - $num2;
?>
Run Code Online (Sandbox Code Playgroud)
上面的结果是-90,这让我意识到number_format函数不适用于计算.
是否有任何方法可以将number_format的值(从上一页的POST获得)转换回正常计算的数值?
首先,原因是:
(int) "10,000.00"
Run Code Online (Sandbox Code Playgroud)
解析为10,因为它停止在第一个非数字字符处解析.感谢PHP的怪异类型系统,当你减去字符串时,这是隐式完成的.
是的,您可以轻松删除逗号:
$unformatted = str_replace(",", "", $formatted);
Run Code Online (Sandbox Code Playgroud)
但是发布原始数值更简洁(您仍然可以使用number_format显示的值).
编辑:最好使用强制转换((int)或(float))或函数版本(intval或floatval)将数字字符串(不带逗号)显式转换为float(或int ).