[英]Math.round(6.079084800080882E-5) = 0.0?
我正在尝试四舍五入
6.079084800080882E-5
但是每当我运行该应用程序时,结果就是
X = 0.0
这是我的代码
tmp = 6.079084800080882E-5;
x = (double)Math.round(tmp);
我不仅输入一个随机数(6.079084800080882E-5),而且这是事先进行一些计算后得出的数值。 这些计算无关紧要,因为这是我要舍入的数字。
Math.round()
返回long
或int
,因此,如果将绝对值小于0.5的数字传递给它,则将得到0。0非常舍入。
这必须为0,因为6.079084800080882E-5 = 0.000060790084000。 E-5表示10 ^(-5)。
正如已经指出的那样, Math.round()
作为标准的回合,因此总是让您摆脱任何小数位并返回整数。
如果需要四舍五入到小数点后的位数,这就是您需要的
import java.math.BigDecimal;
import java.math.RoundingMode;
public class RoundingExample {
public static void main(String[] args) {
double tmp = 6.079084800080882E-5;
System.out.println(round(tmp, 3));
System.out.println(round(tmp, 4));
System.out.println(round(tmp, 5));
System.out.println(round(tmp, 6));
System.out.println(round(tmp, 7));
}
public static double round(double value, int places) {
if (places < 0) {
throw new IllegalArgumentException();
}
BigDecimal bd = new BigDecimal(value);
bd = bd.setScale(places, RoundingMode.HALF_UP);
return bd.doubleValue();
}
}
上面的代码具有此输出
0.0
1.0E-4
6.0E-5
6.1E-5
6.08E-5
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.