首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java中向零四舍五入

问在java中向零四舍五入
EN

Stack Overflow用户
提问于 2011-12-05 23:05:44
回答 8查看 10.9K关注 0票数 18

如何在java中向零取整?

所以-1.9变成-1.0,-0.2变成0.0,3.4变成3.0,依此类推。

改变一些参数,Math.round()能做到这一点吗?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-12-05 23:11:29

我不相信标准库有这样的功能。

问题是,您要求的行为(从数学上讲)取决于数字是大于还是小于0(即,对于负值向上舍入,对于正值向下舍入)

可以使用以下方法:

代码语言:javascript
复制
public double myRound(double val) {
    if (val < 0) {
        return Math.ceil(val);
    }
    return Math.floor(val);
}
票数 22
EN

Stack Overflow用户

发布于 2011-12-05 23:09:09

像这样转换为long:

代码语言:javascript
复制
float x= 1.9;

long y = (long)x;

这会将正数和负数都舍入为零。

票数 10
EN

Stack Overflow用户

发布于 2011-12-05 23:09:10

使用RoundingMode.DOWN,它会导致接近零。

示例:

代码语言:javascript
复制
    BigDecimal value = new BigDecimal("1.4");
    value = value.setScale(0, RoundingMode.DOWN);
    System.out.println(value.doubleValue());
    BigDecimal value1 = new BigDecimal("-1.4");
    value1 = value1.setScale(0, RoundingMode.DOWN);
    System.out.println(value1.doubleValue());
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8387309

复制
相关文章

相似问题

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