首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Java到最近的.5

从Java到最近的.5
EN

Stack Overflow用户
提问于 2014-05-03 20:47:55
回答 3查看 28K关注 0票数 22

在Java中这是怎么可能的呢?

我有一个花车,我想把它绕到最近的.5。

例如:

1.1应转至1.0

1.3应转至1.5

2.5应转至2.5

3.223920应该转到3.0

编辑:而且,我不只是想要字符串表示,我希望在此之后使用一个实际的浮点。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-05-03 20:58:54

@SamiKorhonen在评论中这样说:

乘二,整,最后除以二

这就是密码:

代码语言:javascript
复制
public static double roundToHalf(double d) {
    return Math.round(d * 2) / 2.0;
}

public static void main(String[] args) {
    double d1 = roundToHalf(1.1);
    double d2 = roundToHalf(1.3);
    double d3 = roundToHalf(2.5);
    double d4 = roundToHalf(3.223920);
    double d5 = roundToHalf(3);

    System.out.println(d1);
    System.out.println(d2);
    System.out.println(d3);
    System.out.println(d4);
    System.out.println(d5);
}

输出:

代码语言:javascript
复制
1.0
1.5
2.5
3.0
3.0
票数 45
EN

Stack Overflow用户

发布于 2014-05-03 21:12:25

一般的解决办法是

代码语言:javascript
复制
public static double roundToFraction(double x, long fraction) {
    return (double) Math.round(x * fraction) / fraction;
}

在你的情况下,你可以

代码语言:javascript
复制
double d = roundToFraction(x, 2);

四舍五入到小数点后两位

代码语言:javascript
复制
double d = roundToFraction(x, 100);
票数 10
EN

Stack Overflow用户

发布于 2014-05-03 21:21:27

虽然没有那么优雅,但您可以创建自己的Round,类似于以下内容(它适用于正数,需要添加一些支持负数的内容):

代码语言:javascript
复制
public static double roundHalf(double number) {
    double diff = number - (int)number;
    if (diff < 0.25) return (int)number;
    else if (diff < 0.75) return (int)number + 0.5;
    else return (int)number + 1;
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23449662

复制
相关文章

相似问题

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