用于计算的数字格式

Ham*_*Ham 4 php

当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获得)转换回正常计算的数值?

Mat*_*hen 5

首先,原因是:

(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))或函数版本(intvalfloatval)将数字字符串(不带逗号)显式转换为float(或int ).