NSString - обрезать все после десятичной точки в двойном

У меня есть двойник, мне нужно только значение всего до десятичной точки.

В настоящее время я использую

NSString *level = [NSString stringWithFormat:@"%.1f",doubleLevel];

но когда задано значение 9,96, возвращается «10». Так что это округление. Мне нужно, чтобы он возвращал только «9». (обратите внимание: когда значение равно 9,95, корректно возвращается значение «9».)

Какие-либо предложения?

Благодарю вас.


person edhnb    schedule 29.02.2012    source источник
comment
присвойте вам двойное значение непосредственно int. и попробуй   -  person Devang    schedule 29.02.2012


Ответы (3)


Просто присвойте значение float/double значению int.

int intValue = doubleLevel;
person Hanon    schedule 29.02.2012

Приведите этого ребенка как int.

int castedDouble = doubleLevel;

Все, что находится после . в двойнике, будет усечено.

9.1239809384 --> 9

123.90454980 --> 123

Без округления, простое усечение.

person Peter Kazazes    schedule 29.02.2012

Если вы хотите сохранить его как поплавок:

CGFloat f = 9.99;
f = floorf(f);

существует множество реализаций floor и round. они существуют со времен UN*X и на самом деле являются частью этих низкоуровневых библиотек, будь то BSD, Posix или какая-либо другая разновидность — вам следует с ними ознакомиться.

существуют разные версии для разной «глубины» переменных с плавающей запятой.

person bshirley    schedule 29.02.2012