【发布时间】:2023-12-31 13:49:01
【问题描述】:
问题:
我需要的是 PHP 中的一种方法或函数,可以将具有可变小数位数的数字四舍五入为与成本计算相关的值。
知道产品成本为 0.00023123414123 美元/克是没有意义的,而 0.00023 美元/克会导致非常相似、更实际的成本。当处理少量的东西时,过于准确是低效的。我买不起 0.000231234141 美元,除非我买的东西超过 1000 公斤,否则 0.000231234141 并不比 0.000231 好
上下文:
我正在为一家餐厅开展一个项目,我需要计算产品成本并将结果显示为价格/单位。问题是,根据用户选择的单位,结果可能是 0.25 USD/kg 或 0.00025 USD/g。所以我不能使用 round($var, 2) 因为我不知道需要多少个小数
我将价格和金额存储在数据库的不同列中,并仅为显示结果执行数学运算
让它负责:
假设用户以 36 美元的价格购买了 17 公斤鸡肉,并将费用记录在数据库中。该产品的成本约为 36 美元/17 公斤 = 2.117647058 美元/公斤,我可以四舍五入到 2.11 美元/公斤,到目前为止还不错。但是现在如果用户想知道产品的成本/克,那么相同的数学(在这种情况下是代码)除以产品的货币/数量,我将有 $36/17000g = 0.002117647058 显然不能四舍五入与第一种情况相同的小数位数。
所以我需要一种方法来始终将结果四舍五入为一个干净的数字。
例如:
0.002117647058 => 0.0021
2.117647058 => 2.12
【问题讨论】:
-
不要舍入和存储,仅在显示时舍入(存储精确值),然后您可以毫无问题地反转,再加上一年多的分数加起来
-
@LawrenceCherone,谢谢我编辑了问题:我将价格和金额存储在数据库的不同列中,并仅为显示结果进行数学运算
-
浮点数几乎从不干净,无论它们有多少位数。
-
@IgnacioVazquez-Abrams 我知道,我只需要在显示数字之前去掉多余的小数。这个项目是针对小型本地企业的,因此他们不会花费数百万美元,因此一个极其准确的数字在实践中是没有意义的。