Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 添加数字时获得不同的结果_Php - Fatal编程技术网

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

Php 添加数字时获得不同的结果,php,Php,我目前正在用PHP(货币)做一些简单的十进制数加法,但出于某种原因,我可以将相同的数字加两次,得到不同的结果 我所做的是在PHP中从一个MySQL表中获取一些行,将每个收据的总数相加,并将结果存储在另一个MySQL表中作为十进制(10,2): 第一次在DB中插入正确的值6902.23。当我第二次运行它时,插入DB的值是6.90。 出于某种原因,第二次绕着它转,决定移动小数点 我没有使用number_format()插入数据库,而是存储未经修改的$total_收据 在这个特定的例子中,错误出现在第

我目前正在用PHP(货币)做一些简单的十进制数加法,但出于某种原因,我可以将相同的数字加两次,得到不同的结果

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

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

我没有使用number_format()插入数据库,而是存储未经修改的$total_收据

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

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

请使用number\u 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, ".", "");
}
?>


您是否检查过在将值硬编码到变量中或仅在从db读取时是否会遇到同样的问题?在使用货币时,规则#1可能重复:永远不要将货币单位存储为浮点数/小数!始终使用整数,以美分表示(例如$2.12=212美分并存储整数)。这不仅可以解决浮点数操作带来的麻烦,而且不会出现区域设置问题,etc@developerwjk我试着用硬编码的值复制了4次,但没有成功。我将继续测试。@Qualcuno我从MySQL读取的原始值来自一个CSV文件,该文件具有以下类型的值:1762.229。那应该是1762.23,但如果我乘以100,我会得到176222.9。我该怎么处理呢?
3621.94
1230.29
1025.00
1025.00
<?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, ".", "");
}
?>