在Java中四舍五入到甚至一个小数点

在Java中四舍五入到甚至一个小数点,java,Java,我正在寻找将小数四舍五入到甚至的最佳方法。例如,我有一个double=4.267833399,我想四舍五入到最接近的单位小数,在本例中是4.2,而不是4.3。4.3165656将四舍五入到4.4而不是4.3。 我一直在努力寻找,还没有找到一个简单的方法来做到这一点 我想要双倍的结果 谢谢你可以用这样的东西 double myNumber = 12345.6789; DecimalFormat df = new DecimalFormat("#.0"); df.format(myNumber);

我正在寻找将小数四舍五入到甚至的最佳方法。例如,我有一个double=4.267833399,我想四舍五入到最接近的单位小数,在本例中是4.2,而不是4.3。4.3165656将四舍五入到4.4而不是4.3。 我一直在努力寻找,还没有找到一个简单的方法来做到这一点

我想要双倍的结果


谢谢你可以用这样的东西

double myNumber = 12345.6789;
DecimalFormat df = new DecimalFormat("#.0");
df.format(myNumber);
这将返回
12345.7


编辑:注意到您希望舍入到偶数。您可以使用上述四舍五入方法,然后在小数点为奇数时有条件地处理数字。

您可以使用类似的方法

double myNumber = 12345.6789;
DecimalFormat df = new DecimalFormat("#.0");
df.format(myNumber);
这将返回
12345.7


编辑:注意到您希望舍入到偶数。您可以使用上述四舍五入方法,然后在小数点为奇数时有条件地在后面操作数字。

您可以使用

double d = Math.round(x * 10) / 10.0;
注意这将把4.26四舍五入到4.3,因为它是最接近的,如果你想总是四舍五入,你可以这样做

double d = (long) (x * 10) / 10.0;
double d = Math.round(x * 5) / 5.0;
我想四舍五入到最接近的小数点后一位

如果要四舍五入到0.2的最接近倍数,可以执行以下操作

double d = (long) (x * 10) / 10.0;
double d = Math.round(x * 5) / 5.0;

这将把
4.299
四舍五入到
4.2
4.3
四舍五入到
4.4
您可以使用

double d = Math.round(x * 10) / 10.0;
注意这将把4.26四舍五入到4.3,因为它是最接近的,如果你想总是四舍五入,你可以这样做

double d = (long) (x * 10) / 10.0;
double d = Math.round(x * 5) / 5.0;
我想四舍五入到最接近的小数点后一位

如果要四舍五入到0.2的最接近倍数,可以执行以下操作

double d = (long) (x * 10) / 10.0;
double d = Math.round(x * 5) / 5.0;

这将把
4.299
四舍五入到
4.2
4.3
四舍五入到
4.4
假设您希望您的答案是
双倍
,这应该可以:

double result = Math.round(input * 5) / 5d;

假设您希望您的答案是双倍的,这应该可以:

double result = Math.round(input * 5) / 5d;


快速谷歌搜索的可能重复会导致:你是在寻找结果(4.2)作为
双精度
还是
字符串
?还是作为一个大小数?@PeterLawrey-我认为关键部分是“…甚至到一个小数点”。快速谷歌搜索的可能重复会导致:你在寻找结果(4.2)作为一个
double
String
?或作为一个BigDecimal?@PeterLawrey-我认为关键部分是“…甚至到一个小数点”。可能最好避免使用
float
,只需除以
5.0
,不要与
0x5d
混淆。)这太好了,谢谢。现在我要是能理解它的数学就好了。把四舍五入改成一个小数点就更容易理解了——基本上你会做
Math.round(v*10)/10d
。首先将小数点向左移动一点,然后四舍五入,然后再向左移动。因此,您可以使用
Math.round()。乘法器为5的偶数情况也是如此。最好避免使用
浮点
,只需除以
5.0
,不要与
0x5d
;混淆。)这太好了,谢谢。现在我要是能理解它的数学就好了。把四舍五入改成一个小数点就更容易理解了——基本上你会做
Math.round(v*10)/10d
。首先将小数点向左移动一点,然后四舍五入,然后再向左移动。因此,您可以使用
Math.round()。乘法器为5的偶数情况也同样适用。是的,我确实想四舍五入到最接近的“偶数”小数点。例如4.2、4.4、4.6等@DBell在这种情况下,使用舍入是最简单的。是的,我确实希望舍入到最接近的“偶数”小数点。例如4.2、4.4、4.6等@DBell在这种情况下,使用round是最简单的。