在php中计算字符串值的总价格

时间:2011-10-12 13:19:32

标签: php string

我有一个电子商务商店,在购物车页面上,它为每个产品提供了单独的价格,但我需要总价。

为了做到这一点,我需要一起计算所有这些值,这很好。

但是,让我感到困惑的是,我应该计算以这种格式给出的变量之和:

$455.00

提取值“455”的最佳方法是什么,以便我可以在之后将其添加到另一个值?

我希望自己明白......

7 个答案:

答案 0 :(得分:4)

不要使用float,而是使用整数分。浮点数不准确(参见Floating Point Precision),因此如果使用浮点数,计算往往会失败。如果与付款有关,这尤其是一种负担。

$str = '$455.00';
$r = sscanf($str, '$%d.%d', $dollar, $cent);
if ($r <> 2 or $cent > 99 or $cent < 0 or $dollar > 9999 or $dollar < 0) throw new Exception(sprintf('Invalid string "%s"', $str));

$amountInDollarCents = $dollar * 100 + $cent;

echo $str, ' -> ', $amountInDollarCents;

Demo

答案 1 :(得分:0)

如果您只需删除美元符号,请使用str_replace。要将其转换为int或float,请对其进行类型转换。但是,使用float会导致计算结果不准确,所以要小心!

$newval = (int)str_replace('$', '', '$455.00');

答案 2 :(得分:0)

我认为您的电子商务网站只有$(USD)

$price= substr($string_price,1);

答案 3 :(得分:0)

这会将你的字符串转换为float:

$price = (float)substr("$455.00", 1);
echo($price);

有关详细信息,您可以看到this answer,其中包含几个很好的链接。

答案 4 :(得分:0)

以下内容如何:

$amount = array();
$amount[0] = '$455.15';
$amount[2] = '$85.75';

$total = 0;
foreach ($amount AS $value) {
    $value = str_replace('$', '', $value);
    $total += $value;
}
echo $total . "\n";

清洁操作是:

$value = str_replace('$', '', $value);

您可能希望在函数中提取它,特别是如果您需要在多个位置使用它。

要考虑的另一件事是,为什么你有这样的价值?它是一种显示格式,这种转换应该是最后要完成的,最好是模板。也许,如果可能的话,你应该考虑修改代码,而不是应用像这样的补丁。

答案 5 :(得分:0)

看起来你的程序看起来错了。您应该将所有价格真实地表示为(双倍)而不是字符串。然后,只有当您需要向用户显示价格时,您才会在其前面添加$符号,并将其转换为字符串。但是你的程序应该把价格视为数字而不是字符串。 如果您将价格作为字符串“$ 5.99”存储在数据库中,那么您确实做错了。

答案 6 :(得分:0)

自从我使用PHP以来已经很长时间了,所以我不知道使用货币的最佳做法是什么。一种快速方法是删除“$”和“。”,然后将结果作为整数加在一起。

例如使用str_replace(),并替换“$”和“。”使用空字符串:http://se2.php.net/manual/en/function.str-replace.php

这将为您提供整数美分(从而避免一些潜在的舍入问题)。然后你可以将它除以100并格式化它,但是你想将总和显示为美元。