0

我正在尝试稍微优化我的代码,我正在查看这部分,我将输入价格保存到我的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 位等,因此我们不必担心这一点。

这段代码有效吗?有没有更好的方法来做到这一点?这甚至有必要吗?

4

1 回答 1

0

假设这是一个仅限美元的应用程序,您可以只使用“美分”作为您的货币。这消除了浮点数出现的大量问题。然后,您将有一个简单的转换函数或方法,所有软件都使用显示值 - 它将值除以 100 得到美元,然后得到美分,你从总数中减去美元*100,剩下的是美分,你可以轻松显示:

NSInteger total = ...;
NSInteger dollars = total/100;
NSUInteger cents = abs(total) - abs(dollars*100);
NSString stringWithFormat:@"%%d.%0u", dollars, cents);
于 2013-04-12T15:04:02.977 回答