【发布时间】:2012-05-23 17:50:55
【问题描述】:
我有一些数据库数据,我正在用它们做一些简单的数学运算。出于某种原因,我无法将总数四舍五入到最接近的美元。不过,我还需要包含美分信息。我很肯定每个 itemPrice 条目在数据库中包含两位小数。
if (strpos($row2["itemDiscount"],'%') !== false) {
$itemDiscount = $row2["itemDiscount"];
$itemDetailTotalUnformatted = $row2["itemQuantity"]*($itemPrice*(1-($itemDiscount/100)));
}
else {
$itemDetailTotalUnformatted = $row2["itemQuantity"]*($row2["itemPrice"]-$row2["itemDiscount"]);
}
$itemDetailTotal = number_format($itemDetailTotalUnformatted, 2, '.', '');
echo $itemDetailTotal;
var_dump($row2):
50.00array(6) {
[0]=>
string(1) "2"
"itemQuantity"]=>
string(1) "2"
[1]=>
string(5) "30.00"
[itemPrice]=>
string(1) "30.00"
[2]=>
string(4) "5.00"
[itemPrice]=>
string(4) "5.00"
【问题讨论】:
-
请在 $row2 上做一个 vardump。
-
您是否尝试过先将数据库响应字段转换为浮点数?从您的数据库返回的数据将是字符串数据。
-
@jon 很有趣,虽然它的数学运算是正确的,所以它肯定将所有内容都识别为数字。
-
那么,如果您将所有 $row[] 响应转换为浮动在 $itemDiscount 和 $itemDetailTotal 行中会发生什么变化?
-
你们有人读过这段代码吗? @radleybobins 你能给我们一个工作示例来说明这个代码回显
0.00aka 空字符串的问题。
标签: php number-formatting