关于double:在Java中舍入一个数字

Rounding a number up in Java

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

我不知道如何把数字四舍五入到某些小数点我到处找,试过每一件事

目前我的程序是用整数double rACT = Math.ceil(ACT);
double rSAT = Math.ceil(SAT);
double rGPA = Math.ceil(GPA);

但我要把它四舍五入到小数点后两位

仅供参考-我是个高中生,我真的不需要超复杂的东西。要做到这一点,因为我需要我的方法少于15,我可以浪费任何线路。


可能有一种更简单的方法,但显而易见的是:

1
double rSAT = Math.ceil(SAT * 100) / 100;

这会将2.123这样的数字变为212.3,将其四舍五入为213,然后再将其除以2.13。


通常,四舍五入最好在呈现数字时完成(如字符串)。这样就可以以最高的精度存储/传递数字,并且只有在向用户显示数字时才会截断信息。

此代码最多四舍五入到小数点后两位,并使用天花板。

1
2
3
4
5
6
7
double unrounded = 3.21235;
NumberFormat fmt = NumberFormat.getNumberInstance();
fmt.setMaximumFractionDigits(2);
fmt.setRoundingMode(RoundingMode.CEILING);

String value = fmt.format(unrounded);
System.out.println(value);


如果要查找数字的字符串表示形式,可以执行以下操作:

1
2
DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(12.912385));

这个问题以前被问过,检查如何在Java中把数字转换成小数位数。

在我看来,最简单的解决方案是克里斯的这一个:

1
2
3
double myNum = .912385;
int precision = 10000; //keep 4 digits
myNum= Math.floor(myNum * precision +.5)/precision;