+ 1

Подскажите в чем проблема при i = 2 и 4

https://code.sololearn.com/c9OzCty4OOFb/?ref=app

7th Oct 2017, 4:27 PM
Юрий Исаев
Юрий Исаев - avatar
6 Antworten
+ 14
потому что функция функции pow - это «двойное» число, а не «целое число». поэтому вы видели 99 и 9999 только потому, что двойная точность неявно преобразована в int и потеряла свою точность.
7th Oct 2017, 6:48 PM
Babak
Babak - avatar
+ 13
это то, чего ты хочешь? #include <iostream> #include <math.h> using namespace std; int main() { int x; for(int i=1; i<=5; i++){ cout << i << ":"; cout << " 10 ^ " << i << " = "; x = pow(10, i); cout << x << endl; } return 0; } вывод 1: 10 ^ 1 = 10 2: 10 ^ 2 = 100 3: 10 ^ 3 = 1000 4: 10 ^ 4 = 10000 5: 10 ^ 5 = 100000
7th Oct 2017, 5:07 PM
Babak
Babak - avatar
+ 13
Вам нужно изменить «int x» на «double x»
7th Oct 2017, 6:44 PM
Babak
Babak - avatar
+ 12
всегда пожалуйста, друг мой.
7th Oct 2017, 7:11 PM
Babak
Babak - avatar
+ 1
Нет, мне интересно почему когда я сразу вывожу значение pow(10, i), все выводится как надо, а когда я pow(10, i) сохраняю в x, а потом вывожу x, при i=2 - получаю 99 а не 100, при i=4 - 9999 а не 10000.
7th Oct 2017, 6:32 PM
Юрий Исаев
Юрий Исаев - avatar
+ 1
Респект! К тому, чтобы изменить тип я уже пришёл методом проб и ошибок, а вот причину так и не выяснил) Благодарю!
7th Oct 2017, 7:09 PM
Юрий Исаев
Юрий Исаев - avatar