【问题标题】:adding n number of zeros after decimal在小数点后添加 n 个零
【发布时间】:2012-08-07 09:55:09
【问题描述】:

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

 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("",#.##);但取静态值。而且我的准确性一直在变化。

任何帮助将不胜感激。

【问题讨论】:

  • 显示的精度可以通过format命令来实现。你实际拥有的精度是完全不同的。请记住:您所做的任何乘法、除法、舍入和截断将始终是“近似值”,并且会始终降低浮点值的准确性:en.wikipedia.org/wiki/Floating_point跨度>

标签: java android


【解决方案1】:

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

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());
}

【讨论】:

  • 是的,感觉这会有所帮助。我正在研究您的解决方案。
  • 好吧,我已经测试过这种方法并为我工作。我需要知道你是如何使用它的。
  • @AddingKnowledge 还有一件事:确保发送一个原始数字变量(int、long、float、double、short、byte)而不是类包装器(IntegerFloat、@ 987654326@...)。
【解决方案2】:

您确实可以使用 NumberFormat 来做到这一点

double amount = 15;
NumberFormat formatter = new DecimalFormat("#0.000");
System.out.println("The Decimal Value is:"+formatter.format(amount));

【讨论】:

  • 它将格式化为三位数字。正如我在问题中提到的那样,要添加的零的数量会随着用户也可以输入而不断变化。所以请如果你能给出一些方法,让它在用户输入的小数点后给出零。
  • 好的。在这种情况下,我认为上面@LuiggiMendoza 的回答会对您有所帮助。
【解决方案3】:

你可以使用字符串格式:

双面积 = 6

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

【讨论】:

  • 完美 1 班轮
猜你喜欢
  • 2015-05-25
  • 2021-12-28
  • 2015-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-12
相关资源
最近更新 更多