除法后如何获得超过25个小数位?

问题描述

我试过了,

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 位小数!

解决方法

您可以传递任何您喜欢的 MathContextMathContext.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

上的说明