作者watson1988 (watson)
看板C_and_CPP
標題[問題]有關 round() 的問題
時間Thu Oct 3 17:45:31 2013
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++ 6.0
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
宣告
#include "main.h"
#include <time.h> //time_t time() clock_t clock()
#include <Mmsystem.h> //timeGetTime()
#pragma comment(lib, "Winmm.lib") //timeGetTime()
#include <math.h>
#define Round(x) ((x)-(int)(x))>=0.5?ceil((x)):floor((x))
以下進行例行性的程序
SetPulse=round((111.11111*iParam7));
printf("SetPulse=%d\n",SetPulse);
for(i=0 ;i<iParam3 ;i++)
{ Sleep(100);
for( j = 1 ; j<=10 ; j++)
{
HW_SetPositionPulse(2,SetPulse);
HW_SetPositionPulse(3,SetPulse);
}
}
我的compile有過
但是再build的時候出現了
Linking...
Main.obj : error LNK2001: unresolved external symbol _round
Debug_GMC700K/GMC700K.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
Creating browse info file...
GMC700K.exe - 2 error(s), 0 warning(s)
我找不太到原因出在哪
四捨五入還有其他更簡單的寫法嗎!?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.124.249.111
※ 編輯: watson1988 來自: 140.124.249.111 (10/03 17:51)
→ Schottky:你在搞笑嗎... 10/03 17:51
→ Schottky:我比較喜歡floor(x+0.5) 10/03 17:53
→ watson1988:我這就去重寫~~謝謝囉^^ 10/03 17:55
→ Schottky:你太累了, 眼花的話讓眼睛休息一下... 大小寫錯了而已... 10/03 17:56
→ watson1988:謝謝s大的提醒!! 都快哭了~哈哈XD 10/03 17:59
→ Schottky:剛剛試了一下,你的寫法在 x 為負數時結果不正確... 10/03 18:19
→ Schottky:今天才知道強制轉型int的效果是trunc()不是floor()... XD 10/03 18:23
→ watson1988:如果負值~我這要怎麼改!? 10/03 18:33
換成下面這一行嗎?!
#define ROUND(x) (int)((x) + 0.5 - (double)((x) < 0))
※ 編輯: watson1988 來自: 140.124.249.111 (10/03 18:38)
→ Schottky:(x)-floor(x)>0.5? 10/03 18:38
→ Schottky:不然就用2F的方法 #define ROUND(x) floor((x)+0.5) 10/03 18:41
→ watson1988:了解~這就去改 (((筆記 10/03 18:43
→ watson1988:謝謝s大 ^^ 10/03 18:44