Bạn đang mất độ chính xác khi đánh giá này:
103993/33102.0
như một bộ phận kép. Trên thực tế, sau đây:
BigDecimal num = new BigDecimal(103993/33102.0);
là equivlent tới:
double d = 103993/33102.0;
BigDecimal num = new BigDecimal(d);
thay vào đó, sử dụng:
int scale = 100;
BigDecimal num1 = new BigDecimal(103993);
BigDecimal num2 = new BigDecimal(33102);
System.out.println(num1.divide(num2, scale, RoundingMode.HALF_UP).toString());
OUTPUT:
3.1415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737
Nguồn
2013-03-01 18:50:16
trong giao diện điều khiển nhật thực của tôi, đầu ra của tôi là: 3.1415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613 là chỉ gây ra nhật thực dosent muốn in toàn bộ điều ra –
@WillJamieson Bạn cần phải thực hiện 'scale = 1000000', nhưng tôi tin rằng nó sẽ mất một thời gian dài. –
đã cảm ơn! –