转换为NSDecimalNumer时,没有看到字符串中的小数

时间:2014-01-22 06:57:49

标签: objective-c xcode nsstring nsdecimalnumber

我看不到找到答案,但是我有一个小数点的字符串,当我尝试将其转换为NSDecimalNumber时,我只返回整数,而不是小数或它之后会发生什么。这就是我想要的:

someText.text = @"200.00";
tempAmountOwed = [NSDecimalNumber decimalNumberWithString:someText.text]; // gives me back 200

我似乎无法弄清楚decimalNumberWithString方法是否正在删除我的小数并忽略它后面的内容。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您可以使用方法decimalNumberWithString: locale:方法。

例如: -

代码:

NSLog(@"%@", [NSDecimalNumber decimalNumberWithString:@"200.00"]);
NSLog(@"%@", [NSDecimalNumber decimalNumberWithString:@"200.00" locale:NSLocale.currentLocale]);

提供以下日志:

200
200.00

希望这有帮助!

答案 1 :(得分:0)

这是完全正常的。如果您的十进制字符串不包含分数,则不会打印它们。如果要打印它们,可以使用NSNumberFormatter或将其转换为浮动并使用%.2f进行打印,以执行此操作:

NSString *text = @"200.00";
NSDecimalNumber *number = [NSDecimalNumber decimalNumberWithString:text];
NSLog(@"%@", number); //this will print "200"

//solution #1
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
numberFormatter.numberStyle = NSNumberFormatterDecimalStyle;
numberFormatter.minimumFractionDigits = 2;
NSLog(@"%@", [numberFormatter stringFromNumber:number]); //this will print "200.00"

//solution #2
CGFloat number = [text floatValue];
NSLog(@"%.2f", number); //this will print "200.00"