我试图绕过这个数字
6.079084800080882E-5
但是每当我运行应用程序时,结果就是这个
X = 0.0
这是我的代码
tmp = 6.079084800080882E-5;
x = (double)Math.round(tmp);
我不只是输入一个随机数(6.079084800080882E-5),而且这是一个由一些计算产生的nuber。这些计算并不重要,因为这是我试图回合的数字。
答案 0 :(得分:14)
Math.round()
会返回long
或int
,因此如果您向其传递绝对值小于0.5的数字,那么您将获得0。很圆。
答案 1 :(得分:5)
这必须为0,因为6.079084800080882E-5 = 0.000060790084000。 E-5表示10 ^( - 5)。
答案 2 :(得分:1)
正如已经指出的那样,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