gpt4 book ai didi

objective-c - NSNumber 的格式化绝对值

转载 作者:行者123 更新时间:2023-12-03 18:06:47 33 4
gpt4 key购买 nike

嗯,它实际上是 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) 以忽略 - 符号?

最佳答案

你不需要类型转换。

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

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

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

关于objective-c - NSNumber 的格式化绝对值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1275154/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com