說我有以下值對於這些高德:的iOS:NSDecimalNumber:沒有得到預期的結果
的NSString *百分比= 35 的NSString *值= 146
在我的代碼下面我期待着得到51.1當我做我的乘(146 * 0.35),而是我得到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
我的處理程序出現錯誤的結果嗎?
可能重複:http://stackoverflow.com/questions/2576109/nsdecimalnumber-multiplication-strangeness –