#iphone #xcode #string #decimal #int
#iPhone #xcode #строка #десятичный #int
Вопрос:
Мне было интересно, знает ли кто-нибудь из вас, как использовать десятичные дроби в приложениях для iPhone, у меня есть это в виде кода.
int a;
int b;
int c;
a=.32;
b=.18;
c=a/b;
NSString *cstring = [NSString stringWithFormat:@"%d", c];
NSLog(@"%@",cstring);
NSLog должен выдавать 1.77777777 повторяющийся
но это дает только 1.
Я что-то слышал о NSDecimal и попытался найти это в справочнике Apple и нашел это.
Кто-нибудь знает, что я сделал не так, или знает что-то еще, что могло бы сработать?
Комментарии:
1.
b
являетсяint
и когда вы его назначаете.18
. Он будет приведен к0
. Вc=a/b;
вы пытаетесь разделить число на0
и, следовательно, ошибка.2. Что ж, каждый день узнаешь что-то новое! Спасибо
3. Обратите внимание, что он не получал сообщение об ошибке. Скорее результатом было ‘1’.
4. Да, у меня не было ошибки, я понял, что это округление чисел. Плавающая функция Alexsander — это то, что мне было нужно! Спасибо всем!
Ответ №1:
Проблема в том, что ваши a
, b
и c
объявлены как int
s. Целые числа по определению являются целыми числами. Попробуйте это:
float a = 0.32, b = 0.18, c = a/b; NSLog(@"%f", c);
Числа с плавающей запятой — это числа с плавающей запятой, похожие на десятичные дроби.
Комментарии:
1. Но зачем использовать числа с плавающей запятой? Почему не фактические десятичные дроби (
NSDecimal
как отмечено OP)?2.
NSDecimal
Это структура, и для управления ими вам нужно использовать множество функций C, в то время как вы можете складывать, вычитать, умножать и делитьfloat
обычно, потому что это базовый тип данных. На мой взгляд, использованиеNSDecimal
s для чего-то подобного просто сильно усложняет.