PHP添加2个小数点数(金钱)会导致总金额错误

mah*_*n3d 5 php

我的MySQL数据库中有一个客户发票表,其中有一个名为price的DECIMAL(10,2)字段.

在php中获取这些值并计算总和时,

例如:在剧本中

$totalAmount = 0; // initialised them to 

   while(records){              

       $amount = $inv_amount - ($pay_amount + $onamount); //float i guess. 2.22, 14.22
       $totalAmount = $totalAmount + $amount; //float i guess. 2.22, 14.22 ..etc

    }
Run Code Online (Sandbox Code Playgroud)

echo $totalAmount;它在最终数量0.01中有轻微错误时,但是当处理大约20,000的大数据集时,这个错误变得非常可观,例如200+

在使用PHP中的这些数字处理价格时,最安全的方法是什么?或者我最终会遇到潜在的舍入错误以及使用浮点数据类型时常见的问题?

正在使用

round 
number_format
Run Code Online (Sandbox Code Playgroud)

对于此类金融应用程序,最合适的解决方案是什么?

dec*_*eze 9

实际上,浮点数并不准确.
以分为单位计算(乘以100并以整数计算),或使用BC Math以字符串计算.