Как я могу преобразовать двойное в ближайшее целое значение?

Попробуйте:

class SomeClass {
  var coreDataStuff = CoreDataStuff!
  lazy var somethingElse: SomethingElse = SomethingElse(coreDataStuff: self.coreDataStuff)
}

Важно уточнить тип вашего ленивого var и добавить self. к аргументу, который вы передаете

135
задан Jon Schneider 20 October 2017 в 20:52
поделиться

4 ответа

Использовать Math.round(), возможно в сочетании с MidpointRounding.AwayFromZero

например:

Math.Round(1.2) ==> 1
Math.Round(1.5) ==> 2
Math.Round(2.5) ==> 2
Math.Round(2.5, MidpointRounding.AwayFromZero) ==> 3
78
ответ дан 23 November 2019 в 23:42
поделиться
double d;
int rounded = (int)Math.Round(d);
12
ответ дан 23 November 2019 в 23:42
поделиться
double d = 1.234;
int i = Convert.ToInt32(d);

Ссылка

Дескрипторы, округляющиеся как так:

округленный к ближайшему 32-разрядному целому числу со знаком. Если значение является промежуточным между двумя целыми числами, четное число возвращается; то есть, 4.5 преобразовывается в 4, и 5.5 преобразовывается в 6.

251
ответ дан 23 November 2019 в 23:42
поделиться

Методы в другом броске ответов OverflowException, если значение плавающее вне Международного диапазона. https://docs.microsoft.com/en-us/dotnet/api/system.convert.toint32? view=netframework-4.8#System_Convert_ToInt32_System_Single _

int result = 0;
try {
    result = Convert.ToInt32(value);
}
catch (OverflowException) {
    if (value > 0) result = int.MaxValue;
    else result = int.Minvalue;
}
0
ответ дан 23 November 2019 в 23:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: