3

首先,我的搜索能力可能没有我希望的那么好,所以这种问题可能已经存在。如果是这样请告诉我..

请参阅下面的代码:

new BigDecimal("5").add(new BigDecimal("7"));

对比

new BigDecimal("5").add(new BigDecimal("7"), mathContext);

在哪些情况下我真的需要一个数学上下文(除部门除外)?

除非我划分某些东西,否则我从不使用数学上下文。据我所知,这总是有效的,那么这里的缺点可能是什么?我需要关于加法、减法和乘法的数学上下文吗?我对 BigDecimal 不太了解,我只是想用它来避免丢失任何信息,比如使用双打时。正如我有时在添加某些东西时看到带有 mathcontext 的代码,我太害怕仅仅删除它,因为我认为它是无用的......


我读了那个问题,但没有真正找到我的具体问题的正确答案......我从没有 mathcontext 的 BigDecimals 开始,然后用它们计算。所以我的问题是,在信息丢失/精度等方面,我是否会有缺点?或者这只会导致最大的信息,就是这样?

编辑:我不想四舍五入,从来没有。当然,在像 1/3 这样的除法的情况下,我必须这样做,但在加法、乘法和减法的情况下,我不需要任何舍入。那么在任何情况下我都需要数学上下文吗?

4

2 回答 2

1

如果您正在进行数学运算,则需要四舍五入。

如果您将两个带有小数部分的数字相加、相减或相乘,并且您想对结果进行四舍五入,您也可以使用 mathcontext。

如果你不需要舍入任何东西,那么你就不需要它。

因此,它不仅限于避免像 1/3 这样的无休止的休息问题

于 2015-05-28T07:44:17.200 回答
0

我可以想象这样一种情况,您希望结果是四舍五入的,而 de 操作数不是。加法的一个例子。

1.23 + 3.01 = 4.24

所以,也许你希望你的结果只有小数位,所以你会用 aMathContext来做

1.23 + 3.01 = 4.2

我不知道现实世界的例子,但我认为它们的存在是不可想象的。

于 2015-05-28T07:50:57.013 回答