作者fjf1980 (Yes We Can!)
看板C_and_CPP
標題[問題] 請問一段程式碼
時間Mon Oct 26 18:56:05 2009
#define pi 3.14
int main(int argc, char *argv[])
{
double x=8;
double input_x=0.0;
if(x >= (2*pi))
input_x = x%(2*pi); //這行有問題
else
input_x = x;
printf("%d\n",sn(input_x));
system("PAUSE");
return 0;
}
用DEV_c++ 結果有以下錯誤訊息,不太懂哪裡錯了!懇請高手指點!
//為何是無效的運算元
28 C:\Dev-Cpp\out\cow.c invalid operands to binary %
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.230.197.214
1F:推 VictorTom:不合法的運算元for二元運算子%; 簡單的說, %取餘數運算 10/26 18:57
2F:→ VictorTom:不支援對浮點數做, 要對浮點數做似乎是fmod()這函數. 10/26 18:58
3F:→ fjf1980:我是要取模數 2*pi 所以用取餘數 這樣寫不行嗎 10/26 18:58
4F:→ fjf1980:soga, 感謝! 10/26 18:59
5F:推 QQ29:寫 x- (x/2*pi)*(2*pi)這樣行不行? 10/26 19:00
6F:→ QQ29:另外負號在相反= = 不過matlab可以直接這樣寫..剛還反應不來 10/26 19:00
7F:→ fjf1980:Q大的寫法似乎也行 感謝 10/26 19:04
8F:推 QQ29:x/2*pi 先轉成int XD忘了寫 不過突然覺得為啥math.h不提供 10/26 19:07
9F:→ QQ29:mod 浮點數呢? 10/26 19:07
10F:推 VictorTom:fmod就是math.h的啊??還是C++有C沒有?_? 10/26 19:13
11F:→ VictorTom:x- (x/2*pi)*(2*pi)這個寫法除了減出浮點運算的誤差以外 10/26 19:14
12F:→ VictorTom:減不出其他東西吧?_? 轉int也偏離了fmod()吧?_? 10/26 19:15
13F:→ VictorTom:而且感覺應該是想寫x- x/(2*pi)*(2*pi) ?_? 10/26 19:16
14F:推 VictorTom:這case不用函數作, 考慮原po的pi只有兩位小數, 小弟我會 10/26 19:19
15F:→ VictorTom:直接都乘以100取整之後取餘數完在除以100回來....@_@" 10/26 19:20
16F:推 VictorTom:剛發現我搞混了, 商是整數, 所以Q大的取整就行了....Orz 10/26 19:30