kotlin 与运算
这周,我终于花时间与Sonar一起分析我们的代码库。 特别是让我意识到了很多与浮点算术有关的问题。
有趣的Java浮点算法
那些在学术背景下学习过Java的人可能还记得关于FP算术的一些疑惑。 然后,如果您从未使用过它们,您可能会忘记它们。 这是一个有趣的非常简单的示例,事实证明是:
doublea=5.8d;
doubleb=5.6d;
doublesub=a-b;
assertThat(sub).isEqualTo(0.2d);
与常识相反,此代码段引发AssertionError
: sub
不等于0.2
而是0.20000000000000018
。
BigDecimal作为拐杖
当然,没有任何一种值得称呼的语言能使它站出来。 BigDecimal是Java的答案:
BigDecimal类提供用于算术,缩放操作,舍入,比较,哈希和格式转换的操作。
让我们使用BigDecimal
更新以上代码段:
BigDecimala=newBigDecimal(5.8d);
B