具有特定精度的 Java 双精度字符串
我想转换为.我希望它具有尽可能少的数字,并且最多为6。double
String
所以我找到了将我的转换为.最大精度工作正常,但我希望将其转换为(最小精度)。您知道哪种方法可以像这样工作吗?String.format("%.6f", d)
100.0
100.000000
100
我想转换为.我希望它具有尽可能少的数字,并且最多为6。double
String
所以我找到了将我的转换为.最大精度工作正常,但我希望将其转换为(最小精度)。您知道哪种方法可以像这样工作吗?String.format("%.6f", d)
100.0
100.000000
100
用:。DecimalFormat
new DecimalFormat("#.0#####").format(d)
这将生成具有 1 到 6 位十进制数字的数字。
由于 将使用默认区域设置的符号,因此您可能希望提供要使用的符号:DecimalFormat
//Format using english symbols, e.g. 100.0 instead of 100,0
new DecimalFormat("#.0#####", DecimalFormatSymbols.getInstance( Locale.ENGLISH )).format(d)
要将格式设置为 100.0 到 100,请使用格式字符串 。#.######
请注意,默认情况下将舍入,例如,如果您传入,您将获得输出。如果要改为获取,请提供不同的舍入模式:DecimalFormat
0.9999999
1
0.999999
DecimalFormat formatter = new DecimalFormat("#.######", DecimalFormatSymbols.getInstance( Locale.ENGLISH ));
formatter.setRoundingMode( RoundingMode.DOWN );
String s = formatter.format(d);
这是一个便宜的黑客,可以工作(并且不会引入任何舍入问题):
String string = String.format("%.6f", d).replaceAll("(\\.\\d+?)0*$", "$1");