添加,减去和乘法需要Mathcontext吗?

时间:2015-05-28 07:39:07

标签: java bigdecimal mathcontext

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

请参阅以下代码:

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

VS

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

在哪种情况下我真的需要一个mathcontext(除了分区)?

除非我划分某些东西,否则我从不使用mathcontext。据我所知,这总是有效,所以这里可能有什么缺点?在加,减,乘上需要mathcontext吗?我不太喜欢BigDecimal,我只是想用它来不丢失任何信息,比如使用双打时。 因为我有时会在添加内容时看到带有mathcontext的代码,所以我太害怕只删除它只是因为我觉得它没用了......

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

编辑:我不想圆,永远不会。在像1/3这样的除法的情况下,我当然必须这样做,但是在加,乘和减的情况下我不想要任何舍入。在任何情况下我都需要一个mathcontext吗?

2 个答案:

答案 0 :(得分:1)

如果你正在做数学运算,那就需要四舍五入。

如果使用一些小数部分对两个数字进行加,减或相乘,并且想要对结果进行舍入,则还可以使用mathcontext。

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

所以它不仅限于避免无法休息的问题,如1/3

答案 1 :(得分:0)

我可以想象一种情况,你希望将结果舍入而de操作数不是。添加的一个例子。

1.23 + 3.01 = 4.24

所以,也许你希望你的结果只有小数位,所以你可以使用MathContext来实现它

1.23 + 3.01 = 4.2

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