擅长:python、mysql、java
<p>十进制避免了二进制浮点的一些问题,但不是全部,甚至可能不是大部分</p>
<p>实际问题不是浮点而是数字格式。没有数字格式可以表示所有实数,甚至所有有理数,因此没有数字格式可以处理我们想要对数字执行的所有操作</p>
<p>货币通常用货币单位的小数表示。例如,美元和许多其他货币的“分”是一美元的百分之一。十进制格式可以精确表示1/100<sup>th</sup>。无法使用二进制格式。因此,使用十进制格式,您可以:</p>
<ul>
<li>精确表示十进制货币单位(在格式范围内)</李>
<li>精确地(在格式范围内)添加和减去货币的十进制金额</李>
<li>将十进制货币单位与整数精确相乘(在格式范围内)</李>
</ul>
<p>但是,在尝试以下操作时会出现问题:</p>
<ul>
<li>求平均数或除以除十(或二或五)幂以外的数。例如,如果一家杂货店想以三美元一美元的价格出售一种产品,那就没有办法代表它⅓ 完全是十进制格式</李>
<li>将数字与小数相乘几次以上。每次乘法将增加小数点后的位数。例如,无法使用典型的十进制格式精确计算一年的每月复利</李>
<li>任何复杂的(一般意义上的,不是数学上的)操作,比如考虑货币时间价值、股票市场期权评估等可能涉及的指数运算</李>
</ul>
<p>对于如何进行数值计算,没有通用的解决方案。利用教科书、课程和研究论文研究数值计算及其误差。所以你不能仅仅通过选择一种格式来解决数值问题。了解您使用的任何格式、使用时出现的错误、如何处理这些错误以及需要实现的结果都很重要</p>