Десятичный код при разработке iPhone

#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 для чего-то подобного просто сильно усложняет.