我有一个小公式适用于金额,我在Money对象上使用美分(将金额除以100)以确保浮动不会弄乱。但是,我不确定如何使用它来应用百分比计算。例如,以下利率公式:$ 500 * 0,0048%* 5(500美元,0,0048%/天,5天内)
在计算过程中如何正确表示百分比?它必须是50000 * 0.000048f * 5?
答案 0 :(得分:1)
从技术上讲,你应该计算利息而不是利息,但我们暂时忽略它。
您的利率为48/1000000。因此,每日美分的利息是50000 * 48/1000000。不需要漂浮物,事实上最好避免使用漂浮物。他们在这种情况下工作(少量),但你很快就需要double
。
答案 1 :(得分:1)
您需要使用fixed point arithmetics评估您的操作。
当您声明存储美分时,您实际上是说您的数字已经全部乘以100 - 这是您未存储的另一条信息。因此0.01 $表示为1/100。 0,0048可以表示为48/10000,计算结果为:
50000/100 * 48/10000 * 5 = 12000000/1000000 = 1200/100
比转换回美分(重要:每一步都必须检查溢出,缺少位)以标准化为您的首选表示
请注意,这也是微控制器使用的典型方法(无fpu,低性能)
作为替代方案,如果您不太关心性能,您还可以使用任意精度算术库,如GMP。