首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >对双精度数进行四舍五入以将其转换为int (java)

对双精度数进行四舍五入以将其转换为int (java)
EN

Stack Overflow用户
提问于 2010-04-17 01:05:27
回答 6查看 278.7K关注 0票数 128

现在我试着这样做:

代码语言:javascript
复制
int a = round(n);

其中n是一个double,但它不工作。我做错了什么?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-04-17 01:13:13

代码片段中round()方法的返回类型是什么?

如果这是Math.round()方法,当输入参数为双精度时,它将返回一个Long。

因此,您必须强制转换返回值:

代码语言:javascript
复制
int a = (int) Math.round(doubleVar);
票数 254
EN

Stack Overflow用户

发布于 2015-01-15 19:25:59

如果你不喜欢Math.round(),你也可以使用这个简单的方法:

代码语言:javascript
复制
int a = (int) (doubleVar + 0.5);
票数 30
EN

Stack Overflow用户

发布于 2018-02-03 22:48:01

当Math.round函数接收到一个浮点值时会被重载,它会给你一个整数。例如,这将会起作用。

代码语言:javascript
复制
int a=Math.round(1.7f);

当它接收到一个双精度值时,它会给你一个long,因此你必须将它类型转换为int。

代码语言:javascript
复制
int a=(int)Math.round(1.7);

这样做是为了防止精度损失。你的双精度值是64位,但是你的int变量只能存储32位,所以它只是将它转换为long,这是64位,但你可以像上面解释的那样将它类型转换为32位。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2654839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档