我正在使用Java进行一些计算。结果有一个复杂的格式,如“9.2233720368E11”。
我希望将此数字舍入为5位小数并保持10“E11”的幂。 我试过这段代码
$(document).ready(function() {
// todo
});
工作正常,直到结果中出现10(E)的幂,然后它根本不起作用。
有没有办法直接这样做?或者我必须将其作为文本处理并使用文本方法来修剪不需要的数字。
答案 0 :(得分:4)
要以科学计数法格式化浮点数,以便在保留指数时仅显示5位小数,可以使用以下内容:
double d = 9.2233720368E11;
DecimalFormat df = new DecimalFormat("0.00000E0");
System.out.println(df.format(d));
>> 9.22337E11
正如您所知,传递给0
构造函数的DecimalFormat
的数量(在E
之前)决定了要打印的小数位数。附加到0
的{{1}}的数量决定了指数使用的位数。这也是E
的四舍五入,因此double
会产生9.2233760368E11
。
编辑:我已经创建了一个方法,以防您需要以不同方式格式化结果。
9.22338E11
用法:
public static String format(double d, int numDecimalPlaces, int numExponentDigits) {
StringBuilder sb = new StringBuilder("0.%0");
sb.append(numDecimalPlaces);
sb.append("d");
sb.append("E");
sb.append("%0");
sb.append(numExponentDigits);
sb.append("d");
return new DecimalFormat(String.format(sb.toString(), 0, 0)).format(d);
}