我有一些价格和折扣金额将存储在PHP代码中的配置变量。我想知道是否需要将它们存储为字符串。浮点精度问题只影响计算吗?
例如,是否安全地执行以下操作?
$price = 14.95;
$volume_discount = 0.3;
还是应该将它们存储为字符串?
$price = '14.95';
$volume_discount = '0.3';
我知道,比较浮点数和用浮点数进行计算可能会产生意想不到的结果,除非使用BC Math。但我想知道只是按原样打印出存储的值。我试着回应浮动版本,并按预期显示,但我想知道这是否可靠。
注意:我用预计解释外行人所期待的术语。正如Eric指出的那样,精确的十进制浮点数实际上是而不是的预期结果。
编辑:我现在关心的代码检查数量并确定是否应该应用折扣。然后执行以下计算:
$price -= round($price * $volume_discount, 2);
我通常使用number_format
格式化价格显示,但我注释掉的格式为我的测试。到目前为止,无论价格或折扣价值,PHP一直给我期望的结果。然而,JavaScript并不总是给我想要的结果。这就是让我再次查看我的PHP代码的原因。
显然,我会调整JavaScript,因为那是错误出现的位置,但我试图决定是否需要重构我的PHP代码。
说明问题的数字是149.95 * 0.3。 PHP显示44.985和JavaScript显示44.98499999999999。所以,即使在四舍五入到小数点后两位,我也会得到不同的数字。
取决于您将使用的代码。 – 2013-02-18 06:01:11