APP, который я пишу, должен делать некоторые финансовые расчеты, в основном это все о кредитах, дебетованиях и балансе. Единственная проблема (до сих пор) в том, что если я вычислил 999999999.99 - 0,00, результат будет 1000000000.00. Пожалуйста, кто-нибудь знает, почему это происходит? Вот мой код:iOS - Операции с двойными значениями
NSNumber *totalCredits;
NSNumber *totalDebits;
NSNumber *balance;
self.credits = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];
totalCredits = [self.credits valueForKeyPath:@"@sum.amount"];
double totalCreditsDouble = [totalCredits doubleValue];
self.creditLabel.text = [NSString stringWithFormat:@"%1.2f", totalCreditsDouble];
self.debits = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];
totalDebits = [self.debits valueForKeyPath:@"@sum.amount"];
double totalDebitsDouble = [totalDebits doubleValue];
self.debitLabel.text = [NSString stringWithFormat:@"%1.2f", totalDebitsDouble];
balance = [NSNumber numberWithFloat:([totalCredits floatValue] - [totalDebits floatValue])];
double balanceDouble = [balance doubleValue];
self.balanceLabel.text = [NSString stringWithFormat:@"%1.2f", balanceDouble];
Все данные хранятся как Двойной.
Использование 'double' (или' float') для хранения значений валюты - плохая идея, http://stackoverflow.com/questions/3730019/why-not-use-double-or-float-to-represent- currency – Jack