Округлить вверх или вниз - PullRequest
2 голосов
/ 21 августа 2011

У меня есть число с плавающей запятой, которое я бы хотел округлить вверх или вниз до ближайшего целого числа.

Например:

1.4 = 1.0 1.77 = 2.0 1.1 = 1.0

и т.д ...

Я делаю это в Objective C, так что, думаю, мне нужна стандартная математическая функция ... Будет ли это поблизости делать?

Ответы [ 5 ]

8 голосов
/ 21 августа 2011

Вы можете использовать любую из стандартных математических функций библиотеки C, определенных в math.h. nearbyintf будет работать, как roundf или ceilf или floorf, в зависимости от того, что вы хотите.

Xcode покажет вам документацию (страница руководства UNIX) для этих функций, если вы дважды щелкните их в редакторе.

4 голосов
/ 21 августа 2011

использовать

double a = 2.3;
double b = round(a);

Вы можете найти круглые и другие математические функции в math.h

2 голосов
/ 21 августа 2011

При любом округлении подумайте, возможны ли отрицательные числа.Если это так, традиционный int (int) (x + 0.5) может не выполнять то, что вы хотите, и функция округления может быть лучше.Например, раунд (-1,5) = 2.

0 голосов
/ 21 августа 2011

Округление очень легко реализовать, так как приведение значения как int усекает десятичную часть числа.Пусть 0 <= x < 1.Тогда, если вы хотите, чтобы все значения округлялись до ближайшего целого числа, если десятичная часть меньше x, и округлялись до ближайшего целого числа, если десятичная часть больше или равна x, вам нужно только вычислить:

int roundedValueBasedOnX = (int) (value + (1 - x));

Например, если x = 0.2, то имеем:

1) value = 9.4, округление до 10.

int roundedValueBasedOnX = (int) (9.4 + (1 - 0.2)) = (int) (9.4 + 0.8) = (int) (10.2) = 10;

2) value = 3.1, должно округляться до 3.

int roundedValueBasedOnX = (int) (3.1 + (1 - 0.2)) = (int) (3.1 + 0.8) = (int) (3.9) = 3;

Если x = 0.7, то имеем:

3) value = 9.4, должно округляться до 9.

int roundedValueBasedOnX = (int) (9.4 + (1 - 0.7)) = (int) (9.4 + 0.3) = (int) (9.7) = 9;

4) value = 3.8, должно округляться до 4.

int roundedValueBasedOnX = (int) (3.8 + (1 - 0.7)) = (int) (3.8 + 0.3) = (int) (4.1) = 4;

Надеюсь, это поможет!

0 голосов
/ 21 августа 2011

В старой школе можно добавить 0,5 к числу, а затем дать ему усечь:

int x = (int) (someFloat + 0.5);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...