添加数字时获得不同的结果

时间:2015-03-17 23:09:34

标签: php

我目前正在PHP(货币)中添加一些简单的十进制数字,但出于某种原因,我可以添加两次相同的数字并获得不同的结果。

我正在做的是从PHP中的MySQL表中获取一些行,为每个收据添加总计并将结果存储在另一个MySQL表中作为十进制(10,2):

 <?php   
foreach($query_result as $row) {
     $total_receipts = $total_receipts + $row['total'];

     //my locale requires commas as decimal separators and points for thousands:
     echo number_format($total_receipts,2,",",".");
     }
  ?>

奇怪的是,我可以在完全相同的行上执行两次相同的操作,并获得两个不同的结果,关于小数点。例如,当我添加以下数字时:

3621.94
1230.29
1025.00
1025.00

第一次在DB中插入正确的6902.23值。当我第二次运行时,插入DB的值为6.90。 出于某种原因,第二次围绕它决定移动小数点。

我没有使用number_format()插入数据库,我正在存储$ total_receipts而没有修改。

在这个特定的例子中,错误出现在第二次尝试中,但有时它可以显示第一次,第二次是正确的。有时我甚至无法复制错误。

我做错了什么?我一直在读关于bcmath的内容,但我不确定我是否应该将它用于这个简单的添加。

1 个答案:

答案 0 :(得分:0)

请使用number_format()插入DB:

<?php
$total_receipts = 0; //Always initialize vars
foreach($query_result as $row) {
    $total_receipts += $row['total'];

    //this way to insert into DB
    echo number_format($total_receipts, 2, ".", "");
}
?>