问题描述
我试过了,
BigDecimal dividend = BigDecimal.valueOf(1);
BigDecimal divisor = BigDecimal.valueOf(69);
BigDecimal result = dividend.divide(divisor,MathContext.DECIMAL64);
System.out.println(result.toPlainString().length());
System.out.println(result.toPlainString());
但我只有 19 位小数!
解决方法
您可以传递任何您喜欢的 MathContext
。 MathContext.DECIMAL64
就是 new MathContext(16,RoundingMode.HALF_EVEN)
。
所以你可以这样做
BigDecimal result = dividend.divide(divisor,new MathContext(26,RoundingMode.HALF_EVEN));
,
你可以试试这个。使用您选择的除数和舍入模式设置比例。
BigDecimal dividend = BigDecimal.valueOf( 1 );
BigDecimal divisor = BigDecimal.valueOf( 69 );
BigDecimal result = dividend.divide(divisor,100,RoundingMode.HALF_UP);
System.out.println(result.toPlainString().length());
System.out.println( result.toPlainString( ) );
印刷品
102
0.014492753623188405797101449275362318840579710144927536231884057971014492753623
1884057971014492753623
,
MathContext.DECIMAL64
表示使用 64 位而非 64 位十进制数字的 BigDecimal。请参阅 https://docs.oracle.com/javase/8/docs/api/java/math/MathContext.html#DECIMAL64