如何正确地用PHP进行数字更高的数学运算

时间:2019-02-13 10:55:48

标签: php math

我试图显示总额,即产品价格乘以数量。

这非常适合1000以下的数字,但在此数字之上添加了一个点,并且我的脚本中断了。我该如何解决?

我有这些电话号码:

150,00
1.200,00

它们与变量$price循环。

然后我将所有逗号替换为这样的点:

$subtotalreken = str_replace(',','.',$price);

$subtotalreken then contains

150.00
1.200.00

然后我将其乘以这样的数量:

$totalfinal = $subtotalreken * $cart['quantity'];

两种产品的数量均为2,如果我回显$totalfinal,这是我的结果:

300
2.4

为什么是2.4?而不是2.400?

我需要欧洲/荷兰语格式,因此逗号后每三个数字和一个美分加一个点。我该怎么办?

2 个答案:

答案 0 :(得分:2)

假设“数字”使用逗号作为小数点并将点作为千位分隔符:删除所有点并用点替换逗号,以使1.234,56变成1234.56

$value = (float) strtr("1.234,56", ["." => "", "," => "."]); // 1234.56

您可以使用number_format再次设置值的格式:

echo number_format($value, 2, ",", "."); // 1.234,56

答案 1 :(得分:1)

在进行计算之前,请从您的数字中删除所有格式(只需确保您始终拥有2个小数位数字):

$number = preg_replace('/[^\d]/', '', $input);

然后进行计算(数字以美分表示),并显示给用户格式化的数字:

echo number_format($number * $qunatity / 100, '.', ',', 2);