简化假设:
假定基于x86或x64的体系结构,但请指出可能影响基于RISC的体系结构的任何假设,例如Power芯片或Arm芯片。
计算精度是首要要求。 易于维护将是下一个要求。计算速度很重要,但比其他要求高。
计算需要能够安全地支持操作精确到工厂以及配套值范围达万亿(10 ^ 9)
与其他问题的区别:
如上所述,以前已经针对其他多种语言提出了此类问题。这个问题与其他问题有所不同,原因有两个。
使用以下来源接受的答案:为什么不使用Double或Float代表货币?,让我们重点介绍它们之间的差异。
(解决方案1)几乎可以在任何语言下工作的解决方案是改用整数,并计算分。例如,1025为$ 10.25。几种语言还具有内置类型来处理金钱。(解决方案2)除其他外,Java具有BigDecimal类,而C#具有十进制类型。
重点强调了两个建议的解决方案
第一种解决方案本质上是“定点”方法的一种变体。该解决方案存在一个问题,即建议的范围(跟踪分)不足以进行基于轧机的计算,并且舍入会丢失大量信息。
另一种解决方案是使用decimal
在C中不可用的本机类。
同样,答案不考虑其他选项,例如创建用于处理这些计算的结构或使用任意精度库。这些差异是可以理解的,因为Java没有结构,为什么在语言中有本机支持的情况下为什么还要考虑第三方库。
这个问题不同于该问题和其他相关问题,因为C没有相同级别的本机类型支持,并且具有其他语言没有的语言功能。而且我还没有看到其他任何问题可以解决在C语言中可以采用的多种方法。
问题:
根据我的研究,float
由于浮点错误,似乎不适合用于在C程序中表示货币的数据类型。
我应该用什么来用C表示金钱,为什么这种方法比其他方法更好?
叮当猫咪
翻阅古今
LEATH
相关分类