如果小数部分的前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 :(得分:5)
您的问题是modf
返回小数部分,而不是表示小数部分的整数。返回的值始终小于1,然后在分配给int
时,它会被截断为0。
也许您希望将回报乘以1000:mod = modf(number, &dmod) * 1000.0;