现在我试着这样做:
int a = round(n);
其中n
是一个double
,但它不工作。我做错了什么?
发布于 2010-04-17 01:13:13
代码片段中round()
方法的返回类型是什么?
如果这是Math.round()
方法,当输入参数为双精度时,它将返回一个Long。
因此,您必须强制转换返回值:
int a = (int) Math.round(doubleVar);
发布于 2015-01-15 19:25:59
如果你不喜欢Math.round(),你也可以使用这个简单的方法:
int a = (int) (doubleVar + 0.5);
发布于 2018-02-03 22:48:01
当Math.round函数接收到一个浮点值时会被重载,它会给你一个整数。例如,这将会起作用。
int a=Math.round(1.7f);
当它接收到一个双精度值时,它会给你一个long,因此你必须将它类型转换为int。
int a=(int)Math.round(1.7);
这样做是为了防止精度损失。你的双精度值是64位,但是你的int变量只能存储32位,所以它只是将它转换为long,这是64位,但你可以像上面解释的那样将它类型转换为32位。
https://stackoverflow.com/questions/2654839
复制相似问题