Java 按此方式进行四舍五入(保持小数)

Java 按此方式进行四舍五入(保持小数),java,math,rounding,Java,Math,Rounding,如何更改2.278481。。。到2.2 double a = 180; double b = 79; double x = (a/b); Math.ceil()返回3和Math.floor()返回2尝试以下操作: public static String customFormat(String pattern, double value) { NumberFormat nf = NumberFormat.getNumberInstance(Locale.ENGLISH); De

如何更改2.278481。。。到2.2

double a = 180;
double b = 79;
double x = (a/b);
Math.ceil()
返回
3
Math.floor()
返回
2
尝试以下操作:

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);
这种方法也可以对数字进行四舍五入

对于英语区域设置:

不是小数拆分器。这是有效的:###,##,##,#,#,###

是十进制拆分器。这是无效的:##############,###
(至少不适用于此区域设置)

您可以将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);
 }

}

这可能会帮助您

您是否只有一位浮点数字?是否要打印它?@SathishKumarJ是!如果只需要小数点后1位,则将该值乘以10,转换为整数,然后除以10得到双精度。使用DecimalFormat