如何围绕" 3.416436417734133" 3.416436418" (点后九个位置)但如果我有" 3.7578845854848E41"它转到" 3.7578845855E41"?我试图重新计算一个计算器..
答案 0 :(得分:1)
您可以使用DecimalFormat
,我不确定其他数字,但目前您的数字在小数点前有一位数。因此,请查看以下示例,您可以在其中格式化double值。请注意,您可能需要更改用例的格式模式。
例如:
double d = 3.7578845854848E41;
double d2 = 3.416436417734133;
DecimalFormat f = new DecimalFormat("0.#########E0");
System.out.println(f.format(d));
System.out.println(f.format(d2));
输出:
3.757884585E41
3.416436418E0
//Replace E0 with space as format returns String
编辑:
由于您的默认语言环境。您可以像这样更改本地,
//Change locale
DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols(Locale.US);
DecimalFormat f = new DecimalFormat("0.#########E0", decimalFormatSymbols);
//And than use decimal format
答案 1 :(得分:0)
您可以使用此代码。
BigDecimal aDecimal = new BigDecimal(3.416436417734133);
BigDecimal another = aDecimal.setScale(9, aDecimal.ROUND_HALF_UP);
System.out.println("another: " + another);
System.out.println(new BigDecimal(3.7578845854848E41,new
MathContext(11,RoundingMode.CEILING)));