关于android:我需要将一个浮点数舍入到Java中的两个小数位

I need to round a float to two decimal places in Java

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How to round a number to n decimal places in Java

我很难把浮点数四舍五入到小数点后两位。我尝试了一些我在这里看到的方法,包括简单地使用Math.round(),但无论我做什么,我都会得到不寻常的数字。

我有一个正在处理的浮动列表,列表中的第一个显示为1.2975118E7。什么是E7

当我使用Math.round(f)时(f是浮点数),我得到了完全相同的数字。

我知道我做错了什么,我只是不确定。

我只想数字的格式是x.xx。第一个数字应该是1.30等。


科学1.2975118E7是位置。P></

1
1.2975118E7 = 1.2975118 * 10^7 = 12975118

归来也,Math.round(f)an integer。你不能使用它,让你的教育x.xx格式。P></

你可以使用String.format。P></

1
2
String s = String.format("%.2f", 1.2975118);
// 1.30


如果你正在寻找货币formatting(你不specify but which,that is,似乎是你尝试NumberFormatlooking for the class)。这是非常简单的:P></

1
2
3
double d = 2.3d;
NumberFormat formatter = NumberFormat.getCurrencyInstance();
String output = formatter.format(d);

which will输出(在线depending地方):P></

$2.30P></

也不要求,如果货币(the decimal places"精确二:你可以使用this instead)P></

1
2
3
4
NumberFormat formatter = NumberFormat.getNumberInstance();
formatter.setMinimumFractionDigits(2);
formatter.setMaximumFractionDigits(2);
String output = formatter.format(d);

输出2.30which willP></


你可以让你使用DecimalFormatof the风格给你希望。P></

1
2
3
DecimalFormat df = new DecimalFormat("0.00E0");
double number = 1.2975118E7;
System.out.println(df.format(number));  // prints 1.30E7

因为它的位置在科学,你不会是能够比任何to get the number that many 107没有失去的小订单级精度的工学院。P></


试着看着the bigdecimal舱。EN is the Go to和for rounding准确级货币支持。P></