我需要在Java中将浮点数四舍五入到小数点后两位

2022-09-01 01:10:08

可能的重复:
如何在Java中将数字舍入为n个小数位

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

我有一个正在处理的浮点数列表,列表中的第一个显示为.什么是?1.2975118E7E7

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

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

我只想让数字采用格式。第一个数字应该是 ,等等。x.xx1.30


答案 1

1.2975118E7科学记数法

1.2975118E7 = 1.2975118 * 10^7 = 12975118

此外,还返回一个整数。您不能使用它来获得所需的格式。Math.round(f)x.xx

您可以使用 String.format

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

答案 2

如果你正在寻找货币格式(你没有指定,但似乎这就是你要找的),请尝试这个类。这很简单:NumberFormat

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

这将输出(取决于区域设置):

$2.30

此外,如果不需要货币(只是确切的两个小数位),则可以改用以下命令:

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

这将输出2.30