如何将double舍入到最接近的整数并将其作为Integer返回

时间:2014-06-26 00:20:17

标签: java

假设我有double x。我会返回最近的整数x。例如:

  1. if x = 6.001我会返回6
  2. if x = 5.999我会返回6
  3. 我想我应该使用Math.ceilMath.floor函数。但我不知道如何返回最近的整数...

6 个答案:

答案 0 :(得分:10)

对于您的示例,您似乎想要使用Math.rint()。它将返回给定double的最接近的整数值。

int valueX = (int) Math.rint(x);
int valueY = (int) Math.rint(y);   

答案 1 :(得分:2)

public static void main(String[] args) {
    double x = 6.001;
    double y = 5.999;

    System.out.println(Math.round(x)); //outputs 6
    System.out.println(Math.round(y)); //outputs 6
}

答案 2 :(得分:1)

int a = (int) Math.round(doubleVar);

这将围绕它并将其转换为int。

答案 3 :(得分:0)

您在大多数基础计算机科学课程中学到的最简单的方法可能是add 0.5(或者,如果你的双倍数低于0,则减去它),然后将其强制转换为int

// for the simple case
double someDouble = 6.0001;
int someInt = (int) (someDouble + 0.5); 

// negative case
double negativeDouble = -5.6;
int negativeInt = (int) (negativeDouble - 0.5); 

// general case
double unknownDouble = (Math.random() - 0.5) * 10;
int unknownInt = (int) (unknownDouble + (unknownDouble < 0? -0.5 : 0.5));

答案 4 :(得分:0)

System.out.print(Math.round(totalCost));

简单

答案 5 :(得分:0)

Math.round() Java 中的方法根据参数返回封闭的 int 或 long

Math.round(0.48) = 0
Math.round(85.6) = 86

同样,

Math.ceil 根据参数给出最小的整数。

 Math.round(0.48) = 0
 Math.round(85.6) = 85

Math.floor 根据参数给出最大的整数。

 Math.round(0.48) = 1
 Math.round(85.6) = 86