我将两个数字466489/249001
分开,这导致非终止十进制扩展。
由于
BigDecimal
类存储几乎无限精度的浮点数,我已经去了。
BigDecimal dividend = BigDecimal.valueOf(466489L);
BigDecimal divisor = BigDecimal.valueOf(249001L);
System.out.println((double)466489/249001);
//1.8734422753322275
System.out.println(dividend.divide(divisor, MathContext.DECIMAL128));
//1.873442275332227581415335681382806
从WolframAlpha我得到结果
... 1.87344227533222758141533568138280569154340745619495504034120344898213260187710089517712780269958755185722145694193999220
所以我想我的结果是准确的。
现在我想知道如何使用WolframAlpha计算的BigDecimal
来获得更精确的结果?
答案 0 :(得分:2)
您应该能够提供具有自定义精度的MathContext
实例,例如
dividend.divide(divisor, new MathContext( 100 ) ); //whatever precision you need
答案 1 :(得分:0)
您可以使用适当的舍入来设置比例以实现此目的
System.out.println(dividend.divide(divisor,49,BigDecimal.ROUND_HALF_UP));
我得到以下输出:1.8734422753322275814153356813828056915434074561950
答案 2 :(得分:0)