如何将 10 的幂舍入到 5 位小数
hoe to round a number of power 10 to 5 decimals
我正在使用 Java 进行一些计算。结果以复杂的格式出现,例如“9.2233720368E11”。
我想将这个数字四舍五入到 5 位小数并保留 10 的幂"E11"。
我试过这段代码
rounded = Math.round(subnitOut * 100000.0)/100000.0;
在 10 (E) 的幂出现在结果中之前它工作正常,然后它根本不起作用。
有直接的方法吗?或者我必须将其作为文本处理并使用文本方法 trim 不需要的数字。
要格式化科学记数法中的浮点数,使其仅显示小数点后 5 位,同时保留指数,您可以使用以下方法:
double d = 9.2233720368E11;
DecimalFormat df = new DecimalFormat("0.00000E0");
System.out.println(df.format(d));
>> 9.22337E11
如您所知,传递给 DecimalFormat
构造函数(在 E
之前)的 0
的数量决定了要打印的小数位数。附加到 E
的 0
的数量决定了指数使用的位数。这也对 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);
}
用法:
double d = 9.2233760368E11;
System.out.println(format(d, 5, 1));
>> 9.22338E11
我正在使用 Java 进行一些计算。结果以复杂的格式出现,例如“9.2233720368E11”。
我想将这个数字四舍五入到 5 位小数并保留 10 的幂"E11"。 我试过这段代码
rounded = Math.round(subnitOut * 100000.0)/100000.0;
在 10 (E) 的幂出现在结果中之前它工作正常,然后它根本不起作用。
有直接的方法吗?或者我必须将其作为文本处理并使用文本方法 trim 不需要的数字。
要格式化科学记数法中的浮点数,使其仅显示小数点后 5 位,同时保留指数,您可以使用以下方法:
double d = 9.2233720368E11;
DecimalFormat df = new DecimalFormat("0.00000E0");
System.out.println(df.format(d));
>> 9.22337E11
如您所知,传递给 DecimalFormat
构造函数(在 E
之前)的 0
的数量决定了要打印的小数位数。附加到 E
的 0
的数量决定了指数使用的位数。这也对 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);
}
用法:
double d = 9.2233760368E11;
System.out.println(format(d, 5, 1));
>> 9.22338E11