我有这个给出结果的代码
double a = 128.73;
double roundOff = Math.round(a*100)/100;
System.out.println(roundOff);
Result is :- 128.0
如果dot之后的值大于5,即(6,7,8或9),那么我需要它 应该通过在必须舍入的给定值上加1来给出结果,即
答案 0 :(得分:1)
试试这个,它正在运作
double d = 0.51;
DecimalFormat newFormat = new DecimalFormat("#.");
double twoDecimal = Double.valueOf(newFormat.format(d));
“#”。 =在十进制之后添加#到你需要的地方。
答案 1 :(得分:1)
为什么不使用ROUND_HALF_UP和BigDecimal#setScale?
a = a.setScale(0, BigDecimal.ROUND_HALF_UP);
double myDouble = 55.2; //55.51
BigDecimal test = new BigDecimal(myDouble);
test = test.setScale(0, BigDecimal.ROUND_HALF_UP);
//test is 55 in the first example and 56 in the second
正如@Alex注意到的,上面的代码无法正常工作。以下是使用Math#ceil和Math#floor的另一种方式:
double n = myDouble - Math.floor(myDouble); //This will give you the number
//after the decimal point.
if(n < 0.6) {
myDouble = Math.floor(myDouble);
}
else {
myDouble = Math.ceil(myDouble);
}
答案 2 :(得分:1)
这适用于您的所有数字:
BigDecimal.valueOf(128.54).setScale(1, RoundingMode.HALF_UP)
.setScale(0, RoundingMode.HALF_DOWN)
答案 3 :(得分:0)
如果您确实有这样的需求,请使用以下代码
double value = 128.54;
double rounded = (((value * 10) + 4) / 10)
rounded
的值将为128.0
。
如果value
为128.64
,则结果为129.0
。
如果您有正常的舍入(.5
及更高的舍入值),则必须将第二行更改为
double rounded = (((value * 10) + 5) / 10)
秘诀是常量(4
或5
)必须为10
减去应该向上舍入的值。
答案 4 :(得分:-1)
Math.round(a*100)
使Math.round(12873)
结果为12873
12873
是long
类型的值,但不是double
值。non-decimal
结果12873/100 = 128
。 128.0
。double roundOff = Math.round(128.54); System.out.println(roundOff);// output -- 129.0 double roundOff = Math.round(128.23); System.out.println(roundOff);// output -- 128.0 double roundOff = Math.round(128.73); System.out.println(roundOff);// output -- 129.0 double roundOff = Math.round(128.93); System.out.println(roundOff);// output -- 129.0