如果值为200.3456,则应该将其格式化为200.34。 如果它是200,那么它应该是200.00。


当前回答

double d = 28786.079999999998;
String str = String.format("%1.2f", d);
d = Double.valueOf(str);

其他回答

最简单的方法,就是做一个这样的魔术;

double val = ....;
val = val*100;
val = Math.round(val);
val = val /100;

如果val从200.3456开始,那么它会变成20034.56,然后四舍五入到20035,然后我们除以它得到200.34。

如果你想总是四舍五入,我们可以通过转换为int型来截断:

double val = ....;
val = val*100;
val = (double)((int) val);
val = val /100;

这种技术适用于大多数情况,因为对于非常大的double(正的或负的),它可能会溢出。但如果你知道你的值将在一个适当的范围内,那么这应该对你有用。

请使用Apache通用数学:

Precision.round(10.4567, 2)
double d = 28786.079999999998;
String str = String.format("%1.2f", d);
d = Double.valueOf(str);

对于两个四舍五入数字。非常简单,你基本上是更新变量,而不是只是显示的目的,DecimalFormat。

x =数学。地板(x * 100) / 100;

我认为这样比较简单:

double time = 200.3456;
DecimalFormat df = new DecimalFormat("#.##");      
time = Double.valueOf(df.format(time));

System.out.println(time); // 200.35

请注意,这实际上是为您进行舍入,而不仅仅是格式化。