我有一个NSDecimal,需要它作为技术字符串,即没有任何格式化。浮点应该是“。”如果有的话,减号应该只是一个“ - ”,如果有的话。除此之外,不应该像分组或中文数字一样进行格式化。
我在SDK中寻找了2个小时,但似乎没有什么比这更简单的了。有解决方案吗?
答案 0 :(得分:7)
对于NSDecimal,您可以将NSDecimalString与指定的区域设置一起使用:
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
NSString *decimalString = NSDecimalString(&decimalValue, usLocale);
[usLocale release];
美国语言环境使用小数点分隔符的句点,没有千位分隔符,所以我相信这会让你得到你想要的那种格式。
正如其他人所指出的,对于NSDecimalNumber,您可以将-descriptionWithLocale:方法与上面指定的美国语言环境一起使用。这不会让你失去任何精确度。
答案 1 :(得分:4)
NSLog(@"%@", [theNumber stringValue]);
NSLog(@"%@", NSDecimalString(&theDecimal, nil));
答案 2 :(得分:3)
NSDecimalNumber
是NSNumber
的子类,其-stringValue
方法。
stringValue的
返回接收者的 值作为人类可读的字符串。
- (NSString *)stringValue
返回值
接收者的价值为 人类可读的字符串,由 调用
descriptionWithLocale:
在哪里 区域设置为nil
。descriptionWithLocale:
返回表示内容的字符串 给定语言环境的接收者。
- (NSString *)descriptionWithLocale:(id)aLocale
参数aLocale
一个对象 包含区域设置信息 哪种格式化描述。使用
nil
如果您不想要说明 格式化。
只需致电[theNumber stringValue]
。
答案 3 :(得分:0)
使用NSDecimalNumber类中的decimalNumberWithString:
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