我看不到找到答案,但是我有一个小数点的字符串,当我尝试将其转换为NSDecimalNumber时,我只返回整数,而不是小数或它之后会发生什么。这就是我想要的:
someText.text = @"200.00";
tempAmountOwed = [NSDecimalNumber decimalNumberWithString:someText.text]; // gives me back 200
我似乎无法弄清楚decimalNumberWithString方法是否正在删除我的小数并忽略它后面的内容。
感谢您的帮助!
答案 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"