Java 数学四舍五入(6.0790848000882E-5)=0.0?
我想把这个数字四舍五入Java 数学四舍五入(6.0790848000882E-5)=0.0?,java,math,Java,Math,我想把这个数字四舍五入 6.079084800080882E-5 但每当我运行应用程序时,结果就是这样 X = 0.0 这是我的密码 tmp = 6.079084800080882E-5; x = (double)Math.round(tmp); 我不仅仅是在输入一个随机数(6.0790848000882E-5),而是根据之前的一些计算生成的一个数字。这些计算应该不重要,因为这是我试图取整的数字。Math.round()返回一个long或int,因此如果你向它传递一个绝对值小于0.5的数字
6.079084800080882E-5
但每当我运行应用程序时,结果就是这样
X = 0.0
这是我的密码
tmp = 6.079084800080882E-5;
x = (double)Math.round(tmp);
我不仅仅是在输入一个随机数(6.0790848000882E-5),而是根据之前的一些计算生成的一个数字。这些计算应该不重要,因为这是我试图取整的数字。
Math.round()
返回一个long
或int
,因此如果你向它传递一个绝对值小于0.5的数字,你将得到0。0是非常圆的。这必须是0,因为6.0790848000882E-5=0.0000607900084000。
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();
}
}
什么类型是
tmp
和x
?您期望的是什么?它看起来是四舍五入的。您希望它四舍五入多少位?哈哈,没关系。只有我和数学,我们相处得不太好。ofc,这是0.00006079084。。。。
0.0
1.0E-4
6.0E-5
6.1E-5
6.08E-5