double和float精度已经非常高了,但对于一些更加精确的东西还是有所欠缺,所以也就有了精度更高的bigdecimal,只要计算机的内存更大,精确的就更准。
import java.math.BigDecimal;
导入BigDecimal包。
float f = ran.nextFloat() * 60 + 40;
BigDecimal b = new BigDecimal(f);
float a = b.setScale(1, BigDecimal.ROUND_HALF_UP)
.floatValue();
首先定义float类型的f在40-100范围随机产生随机数给f,在把f的值给BigDecimal进行封装,用BigDecimal里的setScale方法,第一个值表示要保留的位数,1也就是保留一位小数,BigDecimal.ROUND_HALF_UP表示对后面小数进行四舍五入,floatValue得到一个float类型的值,这样就完成了保留一位小数的操作。
顺便提一下还有一个方法,java里有个math类的。
Math.round
语法:
Math.round(x);
参数:
x 为一数值。
解释:
方法。返回对参数x四舍五入后所得的整数近似值。
如:Math.round(11.68)=12。