В настоящее время у меня есть 2 двухместных номера, одна цена с налогом и процент налога.Неожиданное поведение при умножении в объекте-c
Цена: 9,79 (Bascially 11, но без налога) налога: 11%
Теперь то, что мне нужно сделать, чтобы получить цены включительно налог снова, так что я делаю это:
// Tax exclusive test
double taxRate = 0.11;
double priceWithTax = 11;
double priceWithoutTax = priceWithTax * (1.0 - taxRate);
NSLog(@"priceWithoutTax = %f", priceWithoutTax);
double result = priceWithoutTax * (1 + taxRate);
NSLog(@"Result: %f", result);
Но затем после выполнения мой выход это:
priceWithoutTax = 9.790000
Result: 10.866900
Ожидаемый результат будет 11 снова. Если бы кто-нибудь мог помочь, это было бы замечательно, я проверил множество источников вокруг точности float, но я не могу найти ответ.
Заранее благодарен!
UPDATE (новый код после ответа по Вирсавии)
// Tax exclusive test
double taxRate = 0.11;
double priceWithTax = 11;
double priceWithoutTax = priceWithTax * (1.0 - taxRate);
NSLog(@"priceWithoutTax = %f", priceWithoutTax);
double result = priceWithoutTax/(1 - taxRate);
NSLog(@"Result: %f", result);
Результат:
priceWithoutTax = 9.790000
Result: 11.000000
Хорошо, попробуйте сейчас, обновим вопрос, когда попробуем :) –
Это работает !!!! Благодаря!! Ты определенно герой сегодняшнего дня! –
Я приму свой ответ, но могу только через 8 минут ... –