gpt4 book ai didi

iphone - NSNumberFormatter 和舍入百分比值

转载 作者:行者123 更新时间:2023-12-03 21:12:52 26 4
gpt4 key购买 nike

这是我的代码片段,我不知道如何舍入双数。

double m =  [tmpProduct.msrp doubleValue] ;
double d = [tmpProduct.discountPrice doubleValue];
double p = (d * 100 ) / m;

此处 tmpProduct.msrp 和 mpProduct.discountPrice 为 (NSDecimalNUmber *)

通过上面的操作我得到 p = 44.995757

我想将其转换为 (45%),我该怎么做?

这是我使用的,但这没有帮助。

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumFractionDigits:2];
[formatter setRoundingMode: NSNumberFormatterRoundDown];
[formatter stringFromNumber:[NSNumber numberWithDouble:p]]

最佳答案

您是否尝试过使用 NSDecimalNumber 提供的算术运算?
我自己没有尝试过,但您似乎通过在数字实例的双值上使用标准运算符(*、/、...)来绕过 NSDecimalNumber 的优点。
看看NSDecimalNumber: Performing Arithmetic

由于 Objective-C 不支持运算符重载,您必须使用以下方法:

- (NSDecimalNumber *)decimalNumberByDividingBy:(NSDecimalNumber *)decimalNumber

更新:
使用 NSDecimalNumber 除法:

NSDecimalNumber* operandOne = [NSDecimalNumber decimalNumberWithString:@"1234.5"];
NSDecimalNumber* operandTwo = [NSDecimalNumber decimalNumberWithString:@"2335"];
NSDecimalNumber* result = [operandOne decimalNumberByDividingBy:operandTwo];
NSLog(@"%@", [result descriptionWithLocale:[NSLocale currentLocale]]);

通过使用 descriptionWithLocale: ,您可以获得正确的 NSLocaleDecimalSeparator

更新2:
我忘记了四舍五入:
NSDecimalNumber 支持多种舍入模式。
阅读 decimalNumberByRoundingAccordingToBehavior: 的文档

关于iphone - NSNumberFormatter 和舍入百分比值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1971573/

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