NSInteger допускает десятичные разряды?

Мне нужно, чтобы кто-то набрал значение, скажем, "40", а затем приложение преобразует его в другое значение путем деления на 7,5. на данный момент я сделал:

    NSString *pCO2 = _pCO2.text;
    float thepCO2 = [pCO2 floatValue];
    NSInteger newpCO2 = thepCO2/7.5;
    NSString *finalpCO2 = [NSString stringWithFormat:@"%d", newpCO2];

а затем позже, в другом представлении, приложение берет строку NSString с именем finalpCO2 и преобразует ее обратно в число, например, так:

float newpCO2 = ([pCO2 floatValue]);

Однако, когда я делаю это, значения выше 38 для начального pCO2, кажется, округляются до 5 (38 делится на 7,5 = 5,0666), а ниже это округляется до 4 (37 делится на 7,5 = 4,93)

Кто-нибудь знает, почему это может происходить? Я хочу, чтобы цифра была по крайней мере до ближайшего десятичного знака.

Спасибо

Layth

1 ответ

NSInteger хранит только целые числа, поэтому нет, он не хранит десятичные разряды. Использовать NSFloat или же NSDecimal если вам нужно хранить значения с плавающей запятой.

Другие вопросы по тегам