我想把这个数字四舍五入
6.079084800080882E-5
但每当我运行应用程序时,结果是
X = 0.0
这是我的密码
tmp = 6.079084800080882E-5; x = (double)Math.round(tmp);
我不仅仅是输入一个随机数(6.0790848000882E-5),而是一个由之前的一些计算生成的数字。这些计算应该不重要,因为这是我试图四舍五入的数字。
bweufnob1#
Math.round() 返回 long 或者一个 int ,所以如果你给它传递一个绝对值小于0.5的数字,你会得到0。0是非常圆的。
Math.round()
long
int
mbzjlibv2#
必须为0,因为6.079084800080882e-5=0.000060790084000。e-5表示10^(-5)。
ac1kyiln3#
如前所述, 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
3条答案
按热度按时间bweufnob1#
Math.round()
返回long
或者一个int
,所以如果你给它传递一个绝对值小于0.5的数字,你会得到0。0是非常圆的。mbzjlibv2#
必须为0,因为6.079084800080882e-5=0.000060790084000。e-5表示10^(-5)。
ac1kyiln3#
如前所述,
Math.round()
作为标准的四舍五入,因此总是让您摆脱任何小数位,并返回整数。如果您需要四舍五入到特定的小数位数,这就是您需要的
上面的代码有这个输出