2012-09-13 60 views
0

我有一個情況,我需要添加兩個NSDecimals,這是我的代碼:DecimalNumberByAdding如何工作?

NSDecimalNumber *total = [[NSDecimalNumber alloc] initWithString:@"0"]; 
for (Product* product in cartItems) { 
    NSDecimalNumber *prodPrice = [[NSDecimalNumber alloc] init]; 
    prodPrice = product.price; 
    total = [total decimalNumberByAdding:prodPrice]; 
} 
return total; 

當我試圖把兩個數字,例如添加爲0.01和0.02這完全是工作,它給我0.03。

但是,當我使用整數不起作用。作爲一個例子,當我嘗試添加0.01和1時,結果給我一個負數。任何人都可以幫我解決這個問題嗎?

謝謝

+0

什麼是 「'product.price'」 聲明? –

+0

它也是NSDecimal。 – MaryamAyd

+0

你的意思是'NSDecimalNumber'? – JeremyP

回答

0

我稍微修改了你的循環。您的代碼中賦值productPrice = product.price肯定是錯誤的。看看這個:

NSArray *cartItems = [NSArray arrayWithObjects:@"1", @".01", nil]; 
NSDecimalNumber *total = [[NSDecimalNumber alloc] initWithString:@"0"]; 

for (NSString *price in cartItems) { 
    NSDecimalNumber *prodPrice = [[NSDecimalNumber alloc] initWithString:price]; 
    total = [total decimalNumberByAdding:prodPrice]; 
} 
NSLog(@"Total: %@", total); 

回報

2012-09-13 15:04:03.815 Searcher[69779:f803] TotalL 1.01 
+0

該解決方案正常工作,但在某些特定情況下不起作用。 – MaryamAyd

+0

例如,當我添加1和1.06時,它顯示我1.05,因爲這是錯誤的! – MaryamAyd

+0

所以,如果我把上面的循環,使兩個數字1和1.06結果將是1.05?我想不是。 –