modf无法正常工作

时间:2013-09-18 18:23:32

标签: c++ visual-c++ fmodf

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

1 个答案:

答案 0 :(得分:5)

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

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