модф не работает должным образом

Этот код должен отображаться, если первые 3 цифры дробной части содержат «9», но не работают. Переменная «mod», к удивлению, равна 0 для любого числа.

int main( void )
{
float number, dmod;
int mod;
double digit_1, digit_2, digit_3;
double search=9;

cout<<"Enter the number:";
cin>>number;

mod = modf(number, &dmod);
digit_1 = mod /100 % 10;
digit_2 = mod /10  % 10;
digit_3 = mod /1   % 10;

if( (digit_1 == search) || (digit_2 == search) || (digit_3 ==search) )
{
cout<<"mod contains 9"<<endl;
}
else
{
cout<<"mod does not contains 9"<<endl;
}
}

0

Решение

Ваша проблема в том, что modf возвращается дробная часть, не целое число, представляющее дробную часть. Возвращаемое значение всегда меньше единицы, а затем при назначении int оно усекается до 0.

Может быть, вы хотели умножить доход на 1000: mod = modf(number, &dmod) * 1000.0;

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]