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

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

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

现在我试着这样做:

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

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

EN

回答 8

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用户

发布于 2012-09-05 20:46:30

double舍入为“最接近”的整数,如下所示:

1.4 -> 1

1.6 -> 2

-2.1 -> -2

-1.3 -> -1

-1.5 -> -2

代码语言:javascript
运行
复制
private int round(double d){
    double dAbs = Math.abs(d);
    int i = (int) dAbs;
    double result = dAbs - (double) i;
    if(result<0.5){
        return d<0 ? -i : i;            
    }else{
        return d<0 ? -(i+1) : i+1;          
    }
}

您可以根据自己的喜好更改条件(result<0.5)

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

https://stackoverflow.com/questions/2654839

复制
相关文章

相似问题

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