java - 除法后获取数字中的所有小数位

我目前正在使用 BigDecimal,它给了我更多的小数,但对于我想要做的事情来说还远远不够。我需要能够一直到达 10^6 位。这是我当前的代码

BigDecimal num = new BigDecimal(103993/33102.0);
    pw.println(num.toString());

它输出 3.14159265301190249175533608649857342243194580078125

这个数字实际上有更多的小数:http://www.wolframalpha.com/input/?i=103993%2F33102

最佳答案

您在评估时会失去精度:

103993/33102.0

作为双除法。其实如下:

BigDecimal num = new BigDecimal(103993/33102.0);

相当于:

double d = 103993/33102.0;
BigDecimal num = new BigDecimal(d);

改为:

int scale = 100;
BigDecimal num1 = new BigDecimal(103993);
BigDecimal num2 = new BigDecimal(33102);
System.out.println(num1.divide(num2, scale, RoundingMode.HALF_UP).toString());

输出:

3.1415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737

https://stackoverflow.com/questions/15164636/

相关文章:

vba - 更改单元格中某些字符的颜色

c# - .NET 有免费的 SQL 格式化库吗?

c# - 如何在 c# 中将 Decimal 格式化为程序控制的小数位数?

delphi - 如何格式化 DBGrid 列以显示两个小数位?

sql-server - 如何将数字格式化为带有填充零的字符串?

javascript - moment.js - 更改已格式化的过去日期的格式

go - 格式错误。新

python - 如何从列表中删除所有符合特定格式的字符串?

java - 如何用空格左填充整数?

json - 如何在 Delphi 中漂亮地打印 JSON?