определить, какая цифра стоит в разряде с номером i
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main() {
long long int numb;
int count;
cout << "enter number: ";
cin >> numb;
int n = 0;
for (; numb > 0; n++) {
numb /= 10;
}
cout << n << endl;
int i, digit=0;
cout << "enter i: ";
cin >> i;
digit= (numb / pow(10, i)) % 10;
cout << "digit = " << digit;
return 0;
}
нужно определить, какая цифра стоит в разряде с номером i (разряды нумеруются с конца, т.е. разряд единиц имеет номер 0). в моём случае digit всегда равняется нулю. Как это исправить?
Ответы (1 шт):
Автор решения: Qwertiy
→ Ссылка
digit= (numb / pow(10, i)) % 10;
digit = (numb / (long long)pow(10, i)) % 10;
Предупреждение: оказывается, некоторые компиляторы используют функцию pow, вычисляющую подобное возведение в степень неточно, даже несмотря на то, что все точные значения представимы в типе double. Поэтому вместо использования функции pow стоит либо сделать свою функцию, работающую с целыми числами, либо сохранить степени 10 в массив.
А ещё лучше просто делить число на 10 заданное количество раз.