用于计算的数字格式

时间:2011-10-22 08:14:04

标签: php

10000-100时,结果应为9900。

我在使用时尝试过: -

< ?php

$num1 = number_format(round(10000,1),2);
$num2 = number_format(round(100,1),2);
echo $num1 - $num2;

?>

上面的结果是-90,这让我意识到number_format函数不适用于计算。

有没有办法可以将number_format的值(从上一页的POST中获取)转换回正常计算的数值?

3 个答案:

答案 0 :(得分:5)

首先,原因是:

(int) "10,000.00"

解析为10,因为它停止在第一个非数字字符处进行解析。感谢PHP的奇怪类型系统,当你减去字符串时,这是隐式完成的。

是的,您可以轻松删除逗号:

$unformatted = str_replace(",", "", $formatted);

但是发布原始数值更简洁(您仍然可以使用number_format作为显示的值)。

编辑:优良作法是使用强制转换((int)(float))或函数版本({{1})将数字字符串(不带逗号)显式转换为float(或int) }或intval)。

答案 1 :(得分:0)

我认为你不能用等式中的逗号执行此10,000.00 -100.00。只需执行原始算术运算 ,然后格式化答案

$num1 = 10000;

$num2 = 100;

echo number_format(round($num1 - $num2,1),2);

此输出

9,900.00

答案 2 :(得分:0)

有一种更简单的方法。

number_format用于输出数字或简化数字。 number_format使我们有能力制作完美的圆形数字,以获得更好的用户体验。 要在MYSQL数据库中计算和保存Numbers,请使用此命令。

将您的Numbers保存在MYSQL中,始终为DECIMAL类型而不是FLOAT类型。如果你想用FLOAT字段计算,会有很多错误。

比使用英文符号。

$number = 1234.56; 
// english notation without thousands separator 
$english_format_number = number_format($number, 2, '.', ''); //
//    1234.57

现在你可以计算并保存它,没有任何错误。 永远记住自己,将数字保存到$ var始终是一个字符串。 是的,你可以定义类型,但在第一种情况下它并不重要,而且很难在这里解释。

有关number_format的更多信息,请参阅此处 - &gt; http://php.net/manual/en/function.number-format.php