Я попытался преобразовать пользовательский ввод из строки в int
, приведя каждый символ к int
и умножив его на соответствующую экспоненту. Все работает правильно, пока мне не нужно присвоить значение результата переменной int
. Это всегда на единицу меньше правильного значения, когда назначенное значение находится между 100 и 1000. т. Е. int k=0; k+=100;
Но печать k показывает 99. Но k+=1000
работает нормально.
Решение, которое я нашел, состоит в том, чтобы изменить порядокумножения и множителя, но причина этой ситуации до сих пор неизвестна.
string k_input;
cin >> k_input;
int k = 0;
for (int i = 0; i < k_input.length(); i++)
{
cout << (k_input[i] - '0') << " " << pow(10, (k_input.length() - i) - 1) << endl;
k += (k_input[i] - '0') * pow(10, k_input.length() - i - 1);
}
т.е. при вводе 123 вывод должен быть 123, но вместо этого он показывает 122.
И ввод 1221 показывает1221 как ожидалось.