Как мне округлить число до ближайшего int в C #? - PullRequest
52 голосов
/ 25 мая 2009

В C # как округлить число с плавающей точкой до ближайшего целого числа?

Я вижу Math.Ceiling и Math.Round, но они возвращают десятичное число. Должен ли я использовать один из них, а затем привести к Int?

Ответы [ 6 ]

121 голосов
/ 25 мая 2009

Если вы хотите округлить до ближайшего int:

int rounded = (int)Math.Round(precise, 0);

Вы также можете использовать:

int rounded = Convert.ToInt32(precise);

Который будет использовать Math.Round(x, 0);, чтобы округлить и разыграть за вас. Это выглядит аккуратнее, но немного менее ясно, ИМО.


Если вы хотите округлить до :

int roundedUp = (int)Math.Ceiling(precise);
12 голосов
/ 25 мая 2009

с макушки головы:

float fl = 0.678;
int rounded_f = (int)(fl+0.5f);
3 голосов
/ 25 мая 2009

Самое простое - просто добавить 0.5f к нему и затем привести его к int.

3 голосов
/ 25 мая 2009

(int) Math.Round (myNumber, 0)

1 голос
/ 25 мая 2009

Могу ли я использовать один из них, а затем привести к Int?

Да. Это не проблема. Десятичные и двойные числа могут представлять целые числа точно, поэтому не будет ошибки представления. (Например, вы не получите случай, когда Round возвращает 4.999 ... вместо 5.)

0 голосов
/ 25 мая 2009

Вы можете привести к int, если вы уверены, что он находится в диапазоне от int (Int32.MinValue до Int32.MaxValue).

...