我不知道如何将数字四舍五入到特定的小数位数
我已经查遍了所有资料,尝试了各种方法
目前我的程序可以将数字四舍五入到整数:
double rACT = Math.ceil(ACT);
double rSAT = Math.ceil(SAT);
double rGPA = Math.ceil(GPA);
但是我需要将其四舍五入到两个小数位
顺便说一下 - 我是一名高中学生,我真的不需要过于复杂的方法来做到这一点,因为我需要让我的方法少于15行,我不能浪费任何行数
我不知道如何将数字四舍五入到特定的小数位数
我已经查遍了所有资料,尝试了各种方法
目前我的程序可以将数字四舍五入到整数:
double rACT = Math.ceil(ACT);
double rSAT = Math.ceil(SAT);
double rGPA = Math.ceil(GPA);
但是我需要将其四舍五入到两个小数位
顺便说一下 - 我是一名高中学生,我真的不需要过于复杂的方法来做到这一点,因为我需要让我的方法少于15行,我不能浪费任何行数
可能有更简单的方法,但显而易见的是:
double rSAT = Math.ceil(SAT * 100) / 100;
这将把类似2.123的数字转换为212.3,将其四舍五入为213,然后再除以100得到2.13。
Math.ceil()
将会把数字 212.3
四舍五入为 213
。在数学中,向上取整函数将会把任何大于整数的数字四舍五入到下一个可用的整数,所以即使是 212.0003
也会被四舍五入到 213
。你可以使用 Math.round()
函数来执行标准的四舍五入操作,它等同于 Math.floor(decimal + 0.5)
。 - Brandon BuckMath.ceil
)。不过我修改了我的解释,让它说把 212.3 四舍五入到 213。 - Brendan LongMath.ceil()
函数对212.3
进行取整会得到212
,这是不正确的,这也是我评论中主要关注的错误之处。 - Brandon Buck通常情况下,在渲染数字时(例如作为字符串),最好在该点进行舍入。这样,数字可以以最高精度存储/传递,并且仅在向用户显示时截断信息。
此代码最多舍入到两位小数,并使用上取整。
double unrounded = 3.21235;
NumberFormat fmt = NumberFormat.getNumberInstance();
fmt.setMaximumFractionDigits(2);
fmt.setRoundingMode(RoundingMode.CEILING);
String value = fmt.format(unrounded);
System.out.println(value);
这个问题以前已经被问过了,请查看如何在Java中将数字四舍五入到n位小数
我认为,最简单的解决方案是chris提供的这个:
double myNum = .912385;
int precision = 10000; //keep 4 digits
myNum= Math.floor(myNum * precision +.5)/precision;
Math.floor(x + 0.5)
而不是只用 Math.ceil(x)
? - Brendan LongMath.ceil
)来进行四舍五入。 - Brendan LongDecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(12.912385));