我正在尝试优化我的代码,我正在查看这一部分,我将输入价格保存到我的Core Data
实体中,我觉得这是错误/低效的。
NSNumberFormatter *priceFormatter = [[NSNumberFormatter alloc] init];
[priceFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
myEntity.price = (NSDecimalNumber *)[priceFormatter numberFromString:self.priceField.text];
实际上我认为我在这里做的是创建一个具有小数风格的NSNumberFormatter
(显然需要价格,文本字段可能有2而不是2.00的输入所以在某种程度上是必要的然后使用NSNumberFormatter
将文本字段中的值通过强制转换放入NSDecimalNumber
。我想在表单2.00中获得2的原因是当我加载实体并在应用程序中显示它时,我不能这样做。此外,文本字段调节文本字段,使其不能超过2位小数等,所以我们不必担心这一点。
这段代码有效吗?有没有更好的方法呢?这甚至是必要的吗?
答案 0 :(得分:0)
假设这是一个仅限美元的应用程序,您可以使用“美分”作为您的货币。这消除了浮点数发生的大量问题。然后你会有一个简单的转换函数或方法,显示值显示所有软件 - 它将值除以100得到美元,然后得到美分你从总数减去美元* 100,剩下的是美分,你可以轻松显示:
NSInteger total = ...;
NSInteger dollars = total/100;
NSUInteger cents = abs(total) - abs(dollars*100);
NSString stringWithFormat:@"%%d.%0u", dollars, cents);