3

我需要将用户输入的数字精确到几位数。就像如果用户输入一些随机值并给出他想要的精度直到三位数字,那么我需要将数字四舍五入到小数点后三位。所以我做了这样的事情

 int index = value.indexOf('.'); 
            if (index >= 0)
            {
                String fractional = value.substring(index);

                if (fractional.length() > decimalPlaces)
                {
                    floatValue = roundOffDecimals(floatValue, decimalPlaces);
                }
            }
            retVal = new Float(floatValue);

但是当用户输入一些值但不输入任何值作为小数时,我需要将其显示为带有零作为小数位数的惨淡值。就像 15 是他的号码,3 是他的准确度,那么我需要将数字显示为 15.000

当它总是改变时,我无法在小数点后显示零。请帮忙。我试过 DeciamlFormat df = new DecimalFormat("",#.##); 但取静态值。而且我的准确性一直在变化。

任何帮助将不胜感激。

4

3 回答 3

4

您确实可以使用 NumberFormat 来执行此操作

double amount = 15;
NumberFormat formatter = new DecimalFormat("#0.000");
System.out.println("The Decimal Value is:"+formatter.format(amount));
于 2012-08-10T05:25:25.987 回答
4

您可以创建一个返回精确小数格式的方法。这是一个例子:

public String formatNumber(int decimals, double number) {
    StringBuilder sb = new StringBuilder(decimals + 2);
    sb.append("#.");
    for(int i = 0; i < decimals; i++) {
        sb.append("0");
    }
    return new DecimalFormat(sb.toString()).format(number);
}

如果您不需要decimals经常更改值,则可以将方法更改为:

public DecimalFormat getDecimalFormat(int decimals) {
    StringBuilder sb = new StringBuilder(decimals + 2);
    sb.append("#.");
    for(int i = 0; i < decimals; i++) {
        sb.append("0");
    }
    return new DecimalFormat(sb.toString());
}
于 2012-08-10T05:30:48.663 回答
2

您可以使用字符串格式:

双面积 = 6

String ar = String.format("%.3f", area); ar = 6.000

于 2020-01-31T04:04:16.657 回答