Round Double值和指数表示法(java)

时间:2015-08-26 09:46:26

标签: java math rounding

如何围绕" 3.416436417734133" 3.416436418" (点后九个位置)但如果我有" 3.7578845854848E41"它转到" 3.7578845855E41"?我试图重新计算一个计算器..

2 个答案:

答案 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)));