以这种方式向上舍入(保持小数)

时间:2016-07-13 09:55:53

标签: java math rounding

如何将2.278481更改为2.2?

double a = 180;
double b = 79;
double x = (a/b);

Math.ceil()返回3Math.floor()返回2

2 个答案:

答案 0 :(得分:3)

您可以将setMaximumFractionDigits设置为1.像这样:

public class Test {

public static void main(String[] args) {
    System.out.println(format(14.0184849945)); // prints '14.0'
    System.out.println(format(13)); // prints '13'
    System.out.println(format(3.5)); // prints '3.5'
    System.out.println(format(3.138136)); // prints '3.1'
}

 public static String format(Number n) {
    NumberFormat format = DecimalFormat.getInstance();
    format.setRoundingMode(RoundingMode.FLOOR);
    format.setMinimumFractionDigits(0);
    format.setMaximumFractionDigits(1);
    return format.format(n);
 }

}

这可能有助于你

答案 1 :(得分:0)

试试这个:

public static String customFormat(String pattern, double value) {
    NumberFormat nf = NumberFormat.getNumberInstance(Locale.ENGLISH);
    DecimalFormat df = (DecimalFormat)nf;
    df.applyPattern(pattern);
    return df.format(value);

}

通话:

double x = Double.parseDouble(customFormat("###.#", a/b);

此方法也会对数字进行舍入。

对于英语区域设置:

,不是十进制分割器。这是有效的:##,##,##,##。###

.是十进制分割器。这是无效的:##。##。##。##,### (至少不适用于此语言环境)