Информация об изменениях

Сообщение Re[8]: использование round от 16.02.2018 8:59

Изменено 16.02.2018 8:59 rg45

Re[8]: использование round
Здравствуйте, Marty, Вы писали:

M>>
M>>double d = 5.5;
M>>int i = (int)(d+0.5);
M>>


TB>>Ну если так, то что будет для отрицательных чисел?


M>Будет отброшена дробная часть, не?


Тут тебе придется с ним согласиться — твой вариант для отрицательных чисел будет работать не так как это ожидается от арифметического округления. Например, если мы захотм округлить -2.1, то получим: -2.1 -> -1.6 -> 1. Чтобы работало как надо, нужно слегка допилить:

int i = (int)(d < 0 ? d - 0.5 : d + 0.5);
Re[8]: использование round
Здравствуйте, Marty, Вы писали:

M>>
M>>double d = 5.5;
M>>int i = (int)(d+0.5);
M>>


TB>>Ну если так, то что будет для отрицательных чисел?


M>Будет отброшена дробная часть, не?


Тут тебе придется с ним согласиться — твой вариант для отрицательных чисел будет работать не так как это ожидается от арифметического округления. Например, если мы захотм округлить -2.1, то получим: -2.1 -> -1.6 -> -1. Чтобы работало как надо, нужно слегка допилить:

int i = (int)(d < 0 ? d - 0.5 : d + 0.5);