将双值格式化为2位小数的最佳方法[重复]

时间:2022-06-20 17:11:34

Possible Duplicate:
Round a double to 2 significant figures after decimal point

可能重复:小数点后的两位数到两位数

I am dealing with lot of double values in my application, is there is any easy way to handle the formatting of decimal values in Java?

我正在处理我的应用程序中的许多双值,有什么简单的方法来处理Java中的十进制值格式吗?

Is there any other better way of doing it than

还有比这更好的方法吗

 DecimalFormat df = new DecimalFormat("#.##");

What i want to do basically is format double values like

我想要做的就是像这样格式化双值

23.59004  to 23.59

35.7  to 35.70

3.0 to 3.00

9 to 9.00

2 个解决方案

#1


401  

No, there is no better way.

没有更好的办法。

Actually you have an error in your pattern. What you want is:

实际上你的模式有一个错误。你想要的是:

DecimalFormat df = new DecimalFormat("#.00"); 

Note the "00", meaning exactly two decimal places.

注意“00”,也就是小数点后两位。

If you use "#.##" (# means "optional" digit), it will drop trailing zeroes - ie new DecimalFormat("#.##").format(3.0d); prints just "3", not "3.00".

如果你使用“#。## #"(#表示“可选”的数字),它会拖后0 -即新的DecimalFormat(“## ## ## ## ##”).format(3.0d);只打印“3”,而不是“3.00”。

#2


307  

An alternative is to use String.format:

另一种选择是使用String.format:

double[] arr = { 23.59004,
    35.7,
    3.0,
    9
};

for ( double dub : arr ) {
  System.out.println( String.format( "%.2f", dub ) );
}

output:

输出:

23.59
35.70
3.00
9.00

You could also use System.out.format (same method signature), or create a java.util.Formatter which works in the same way.

你也可以用System.out。格式化(相同的方法签名),或者创建java.util。格式化程序,它以相同的方式工作。

#1


401  

No, there is no better way.

没有更好的办法。

Actually you have an error in your pattern. What you want is:

实际上你的模式有一个错误。你想要的是:

DecimalFormat df = new DecimalFormat("#.00"); 

Note the "00", meaning exactly two decimal places.

注意“00”,也就是小数点后两位。

If you use "#.##" (# means "optional" digit), it will drop trailing zeroes - ie new DecimalFormat("#.##").format(3.0d); prints just "3", not "3.00".

如果你使用“#。## #"(#表示“可选”的数字),它会拖后0 -即新的DecimalFormat(“## ## ## ## ##”).format(3.0d);只打印“3”,而不是“3.00”。

#2


307  

An alternative is to use String.format:

另一种选择是使用String.format:

double[] arr = { 23.59004,
    35.7,
    3.0,
    9
};

for ( double dub : arr ) {
  System.out.println( String.format( "%.2f", dub ) );
}

output:

输出:

23.59
35.70
3.00
9.00

You could also use System.out.format (same method signature), or create a java.util.Formatter which works in the same way.

你也可以用System.out。格式化(相同的方法签名),或者创建java.util。格式化程序,它以相同的方式工作。