Этот код должен отображаться, если первые 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;
}
}
Ваша проблема в том, что modf
возвращается дробная часть, не целое число, представляющее дробную часть. Возвращаемое значение всегда меньше единицы, а затем при назначении int
оно усекается до 0.
Может быть, вы хотели умножить доход на 1000: mod = modf(number, &dmod) * 1000.0;
Других решений пока нет …