我正在使用Python3' decimal模块。底层算法是使用处理器浮点类型完成的,还是使用整数?结果是确切的概念'并且任意精度向我表明在表面之下使用整数数学。
答案 0 :(得分:1)
确实是整数数学,而不是浮动数学。粗略地说,每个浮点数都是两部分 - 小数点前后(整数和余数)。由于计算是使用整数运算完成的,因此不会向上舍入,因此即使您只用非常小的分数总结一个非常大的值,它们仍然保持精确。
这是有代价的 - 操作次数要大得多,而且并不总是必须始终如此精确。这就是为什么大多数计算是使用浮点运算完成的,当浮点数上有许多算术运算或者值之间存在显着差异时(例如10 ^ 10比率和更多),可能会导致精度损失。有一个独立的计算机科学领域:numerical analysis或数值方法,研究巧妙的方法,以获得最大的浮动计算速度,同时保持最高的精度。