Java 使用十进制格式显示前导零
我正在尝试使用十进制格式显示十进制的前导零。。。我的代码如下:Java 使用十进制格式显示前导零,java,decimal,Java,Decimal,我正在尝试使用十进制格式显示十进制的前导零。。。我的代码如下: import java.math.RoundingMode; import java.text.DecimalFormat; import java.text.ParseException; public class ElementValueUtil { public static String formatDoubleNonExponential(double value) { return format
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.ParseException;
public class ElementValueUtil {
public static String formatDoubleNonExponential(double value) {
return formatDoubleNonExponential(value, null);
}
public static String formatDoubleNonExponential(double value, String elementName) {
DecimalFormat decimalFormat = new DecimalFormat();
Integer decimalPrecision = 5;
decimalFormat.setMaximumFractionDigits(decimalPrecision);
decimalFormat.setRoundingMode(RoundingMode.HALF_UP);
String exponentialNum = decimalFormat.format(value);
try{
return String.valueOf(decimalFormat.parse(exponentialNum));
}catch(ParseException exception){
return String.valueOf(value);
}
}
public static void main(String[] args) {
Double num = 12.4567012;
System.out.println(formatDoubleNonExponential(num));
}
}
我得到的输出为“12.4567”
但我期待的是“12.45670”
任何帮助都将不胜感激
注意:整数部分可以有任意数量的数字,也可以没有任何数字。。。但如果分数部分的小数位数超过5,则应舍入到5位小数
For example
Input Output
12.25 12.25
125.2345 125.2345
12.12340675 12.12341
12.12340123 12.12340
试试这个
static String format(double d) {
String s = new DecimalFormat("").format(d);
if (s.length() - s.indexOf(',') > 5) {
s = String.format("%.5f", d);
}
return s;
}
public static void main(String[] args) throws Exception {
System.out.println(format(12.25));
System.out.println(format(125.2345));
System.out.println(format(12.12340675));
System.out.println(format(12.12340123));
}
输出
12.25
125.2345
12.12341
12.12340
谢谢但当我给出12.25时,这将失败,输出将显示为12.25000,而不是12.25。所以我更喜欢使用“DecimalFormat”。但不幸的是,它在四舍五入后没有显示前导零。