Как получить представление неформатированной строки NSDecimal или NSDecimalNumber?

5
задан Another Registered User 29 November 2009 в 14:25
поделиться

4 ответа

Для NSDecimal вы можете использовать NSDecimalString с указанным языковым стандартом:

NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
NSString *decimalString =  NSDecimalString(&decimalValue, usLocale);
[usLocale release];

В региональных стандартах США в качестве десятичного разделителя используется точка, а не тысячи. separator, поэтому я считаю, что это даст вам тот тип форматирования, который вы ищете.

Как указывали другие, для NSDecimalNumber вы можете использовать метод -descriptionWithLocale: с указанным выше локалью США. Это не теряет точности.

7
ответ дан 18 December 2019 в 13:15
поделиться

NSDecimalNumber

NSLog(@"%@", [theNumber stringValue]);

NSDecimal

NSLog(@"%@", NSDecimalString(&theDecimal, nil));
4
ответ дан 18 December 2019 в 13:15
поделиться

NSDecimalNumber является подклассом NSNumber , который имеет метод -stringValue .

stringValue

Возвращает значение получателя значение в виде удобочитаемой строки.

 - (NSString *) stringValue

Возвращаемое значение

Значение получателя как удобочитаемая строка, созданная вызов descriptionWithLocale: где locale - nil .

descriptionWithLocale:

Возвращает строку, представляющую содержимое получатель для данной локали.

 - (NSString *) descriptionWithLocale: (id) aLocale

Параметры aLocale

Объект содержащий информацию о локали с для форматирования описания. Использовать nil , если вам не нужно описание отформатирован.

Просто позвоните по [theNumber stringValue] .

3
ответ дан 18 December 2019 в 13:15
поделиться

Используйте decimalNumberWithString из класса NSDecimalNumber:

NSDecimalNumber *dn = [NSDecimalNumber decimalNumberWithMantissa:12345
                                                        exponent:-100
                                                      isNegative:YES];
NSDictionary *local = nil;
NSString *ds = [dn descriptionWithLocale: local];
NSLog(@"dn: %@", dn);
NSLog(@"ds: %@", ds);

dn: -0.00000000000000000000000 … 0000000000000000000000000000000000012345
ds: -0.00000000000000000000000 … 0000000000000000000000000000000000012345
0
ответ дан 18 December 2019 в 13:15
поделиться
Другие вопросы по тегам:

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