2015-03-24 2 views

ответ

2

Вы можете попробовать использовать

float x = (float)Math.ceil(x); 

или

float y = (float)Math.round(y); 

Также обратите внимание, что я преобразовал их обратно, чтобы плавать, так как может быть потеря точности при преобразовании двойной плавать.

+0

зачем плавать и не удваивать? – Alaychem

+0

@Alaychem: - Вы также можете взять двойное. Та же логика. Я выбрал поплавок! –

+0

Это не совсем сработает, но оно перевернуло идею. 'float x = (float) Math.ceil (x);' объявляет новую переменную и затем пытается использовать неопределенное значение этой переменной, чтобы присвоить значение этой переменной. –

0

One line ответ!

public static long roundToClosestLong(long num, long div) { 
     return (long) num/div + ((double) (num % div)/div < 0.5 ? 0 : 1); 
} 
0

Для этого вы можете использовать класс java.lang.Math.

  1. Math#round(double) Будет accecpt double в качестве аргумента и возвращает long
  2. Math#round(float) Будет accecpt float в качестве аргумента и возвращает int
0

Вы можете сделать:

int result = (int) (yourValue + 0.5); 

если вам просто нужно простое округление это, возможно, более эффективное решение, чем Math.round(yourValue)