0

如果小数部分的前 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;
    }
 }
4

1 回答 1

5

您的问题是modf返回小数部分,而不是代表小数部分的整数。返回的值始终小于 1,然后当分配给 a 时,int它会被截断为 0。

也许您想将回报乘以 1000:mod = modf(number, &dmod) * 1000.0;

于 2013-09-18T18:27:50.740 回答