本人在做matlab**轉c語言**時,排查bug,終於發現,問題出在mod取餘函式:
float
floatmodint
(float ft,
int it)
//浮點數對整數取餘
以1.369餘1為例,確實,matlab的mod函式的計算結果與floatmodint函式的返回值一致,均為0.369.
matlab計算結果
c計算結果
然而,對於負數的取餘就有點意思了。
以-1.369為例
matlab對負數取餘
該c**對負數取餘
我人傻了,負數取余是這麼取餘的嘛???看起來越簡單的函式越要注意它的實現,當初寫c**的時候沒把它當個人,現在它給我了一拳+_+[浪費我兩天時間排查**~_~』』』』],記錄一下這件事,權當是教訓了。
附上:c語言實現float對int的取餘的正確**,其實我要當時看一眼matlab對mod原始碼裡的注釋也不至於!!!
float
floatmodint
(float ft,
int it)
//#include
matlab中的注釋
*一種植物!!!!
matlab的rem 和mod 函式
rem x,y 求整除x y的餘數 mod x,y 求模 rem x,y x y.fix x.y fix 向0取整 mod x,y x y.floor x.y floor 向左取整,以數抽為準,朝負無窮方向取整 如果x和y的符號相同 同為 同為 那麼rem x,y mod x,y 正數與正數,負數與...
關於 MOD 和 選擇
我常常會用到 dim總數 asint16 10 dim記錄數 asint16 6 得到要分幾頁 if總數 記錄數 總數 記錄數 then response.write 總數 記錄數 else response.write 總數 記錄數 1 endif 一位同事的做法,看起來舒服些 ifinttota...
關於matlab路徑的問題
前言 由於matlab 只執行自己工作路徑下的檔案,所以相對路徑必須的相對 考慮的是當前的工作目錄,所以使用相對路徑的時候 必須要先確定一下當前的工作目錄是在 然後再設定相應的相對路徑 絕對路徑的卻現在在於只能對乙個電腦有用 fname c sd 實驗備份 magec me magic all da...