我有一个电子商务商店,在购物车页面上,它为每个产品提供了单独的价格,但我需要总价。
为了做到这一点,我需要一起计算所有这些值,这很好。
但是,让我感到困惑的是,我应该计算以这种格式给出的变量之和:
$455.00
提取值“455”的最佳方法是什么,以便我可以在之后将其添加到另一个值?
我希望自己明白......
答案 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;
答案 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并格式化它,但是你想将总和显示为美元。