iOS:NSDecimalNumber:没有得到预期的结果

标签 ios nsdecimalnumber

假设我对这些 ivar 具有以下值:

NSString* 百分比 = 35 NSString* 值 = 146

在我下面的代码中,当我进行乘法 (146*.35) 时,我期望得到 51.1,但结果却是 100。

- (NSDecimalNumber*) getProductByPercentage : (NSArray*) itemsToMultiply : (float) annualPatients {

    //get items from array
    NSString* percentage = [itemsToMultiply objectAtIndex:0];
    NSString* value = [itemsToMultiply objectAtIndex:1];

    //init a number formatter
    NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
    //set its formatting style
    [f setNumberStyle:NSNumberFormatterDecimalStyle];

    //convert to percentage
    float thisPercentage = [percentage floatValue]/100;

    //convert to NSDecimal
    NSDecimalNumber* decPercentage = [[NSDecimalNumber alloc] initWithString:[NSString stringWithFormat:@"%f",  thisPercentage]];
    NSDecimalNumber* decAvgReimbursement = [[NSDecimalNumber alloc] initWithString: value];
    NSDecimalNumber* decAnnualPatients = [[NSDecimalNumber alloc] initWithString:[NSString stringWithFormat:@"%f", annualPatients]];

    //set up handler
    NSDecimalNumberHandler *handler = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundPlain
            scale:-2
            raiseOnExactness:NO
            raiseOnOverflow:NO
            raiseOnUnderflow:NO
            raiseOnDivideByZero:NO
    ];

    //get our results
    NSDecimalNumber* decAvgCost = [decAvgReimbursement decimalNumberByMultiplyingBy:decPercentage
                                                                 withBehavior:handler];

    NSLog(@"%@::%@::%@", decAvgCost, decAvgReimbursement, decPercentage);

    return decAvgCost;
}

这是我的日志输出

2013-02-04 13:57:46.960 EUS Calculator[34154:c07] 100::146::0.35

我的处理程序是否有问题导致我得到错误的结果?

最佳答案

scale:-2

您将比例设置为四舍五入到 -2 位小数,即最接近的 100。

关于iOS:NSDecimalNumber:没有得到预期的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14693582/

相关文章:

ios - 是否可以使用iPod开发适用于iOS的应用程序?

ios - QLPreviewController 有时不显示文档

ios - 当 UITextField 包含货币符号时,NSDecimalNumber 数学运算导致应用程序崩溃

ios - Swift Xcode 找不到 MapKit 作为导出

objective-c - 如何动态设置属性

javascript - 使用仪器从 iOS 自动化测试文件异步调用

exception-handling - Swift Exceptions 异常处理

ios - NSDecimal 等于 NSDecimalNumber 值?

ios - JSON中的ID很大,如何在不损失精度的情况下获取它

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