NSNumber 的格式化绝对值

发布于 2024-07-30 14:15:52 字数 582 浏览 8 评论 0原文

好吧,它实际上是 NSDecimalNumbers 数组的总和,我想获得其绝对值......我一直觉得我正在与框架进行所有的转换和转换。 所需的类型转换...从 double 到 NSNumber 到 NSDecimalNumber 并返回...同时尝试保持 NSDecimalNumber 提供的精度。 以下方法有效,但有没有一种更简单的方法可以避免所有这些转换和转换? 类型转换?

NSNumber *totalAmt = [customObjectArray valueForKeyPath:@"@sum.decimalNumberValue"];
NSString *totalAmtString = [currencyFormatter stringFromNumber:[NSNumber numberWithDouble:fabs([totalAmt doubleValue])]];
sectionLabel.text = [NSString stringWithFormat:@"Total: %@", totalAmtString];

也许我可以更改 NSNumberFormatter (currencyFormatter) 以忽略 - 符号?

Well, it's actually the sum of an array of NSDecimalNumbers I'd like to get the absolute value of... I constantly feel like I'm fighting the framework with all the conversions & typecasting that are required...from double to NSNumber to NSDecimalNumber and back and...all while trying to maintain the precision that NSDecimalNumber affords. The following works but is there an easier way that avoids all this conversion & type casting?

NSNumber *totalAmt = [customObjectArray valueForKeyPath:@"@sum.decimalNumberValue"];
NSString *totalAmtString = [currencyFormatter stringFromNumber:[NSNumber numberWithDouble:fabs([totalAmt doubleValue])]];
sectionLabel.text = [NSString stringWithFormat:@"Total: %@", totalAmtString];

perhaps I could alter the NSNumberFormatter (currencyFormatter) to ignore the - sign?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

奶气 2024-08-06 14:15:52

你不需要类型转换。

NSNumber *totalAmt = [customObjectArray valueForKeyPath:@"@sum.decimalNumberValue"];
NSString *totalAmtString = [currencyFormatter stringFromNumber:totalAmt];
sectionLabel.text = [NSString stringWithFormat:@"Total: %@", totalAmtString];

这可以正常工作,因为 NSDecimalNumber 是 NSNumber 的子类。

如果 sectionLabel 是您在 IB 中绑定的内容,请尝试将值 totalAmt 绑定到“模式值”,而不是将 sectionLabel 绑定到“值”。 这将保存最后一行:)
如果 customObjectArray 是您可以通过 NSArrayController 访问的内容,那么您应该在第一行中输入给定的键路径作为“模式值”绑定中的键路径。
使用这种方式,您可以删除所有给定的三行:)

you don't need the type cast.

NSNumber *totalAmt = [customObjectArray valueForKeyPath:@"@sum.decimalNumberValue"];
NSString *totalAmtString = [currencyFormatter stringFromNumber:totalAmt];
sectionLabel.text = [NSString stringWithFormat:@"Total: %@", totalAmtString];

this will work fine because NSDecimalNumber is a subclass of NSNumber.

And if sectionLabel is something you bind in IB, try to bind the value totalAmt to 'pattern value' instead of sectionLabel to 'value'. This will save the last line :)
And if customObjectArray is something you have access via an NSArrayController, then you should enter the given key path in the first line as key path in the 'pattern value' binding.
Using this way you can delete all the given three lines :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文