2013-09-18 3 views
0

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

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

Что вы подразумеваете под 'null'? «Int» не может быть «null». – chris

+0

Я имею в виду, что в переменной mod debugger значение 0 для любого числа. – mixaill

ответ

5

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^