→ linotwo:有可能是 debug 版跟 release 版的差異。 11/07 19:37
一樣都是release版呢
→ azureblaze:這數值判斷...真有創意 11/07 19:47
→ azureblaze:浮點數運算大家都不照標準做,所以不同電腦可能會不同 11/07 19:49
→ azureblaze:數值相等最好使用fabs(a - b) < 0.000001之類的方式 11/07 19:50
→ james732:我也覺得這種判斷法真可怕... 11/07 19:57
感謝指點 其實這分數的比對(if score == "0.00")之後的程式
才是我負責的 算是蠻下游的
今天一直往上游追才看到前人留下的程式碼
小弟浮點數的運算是都有採用azureblaze說的那樣
採用 fabs(a - b)<0.000001來做運算的
本來以為浮點數已經強迫轉為字串(CString)
字串"0.00"就是4個字元 這樣應該就沒有浮點數精度的問題了
沒想到還是漏算一著
那請問是否該把 score 轉回 float
fabs(float(score) - 0.0) < 0.0001 做比較呢?
→ hilorrk:標題我以為是表情符號...XD 11/07 20:00
※ 編輯: jokingfish 來自: 122.117.112.106 (11/07 21:26)
→ uranusjr:其實轉都轉了不如直接加個判斷 -0.00 的條件就好了XD 11/07 22:14
→ uranusjr:如果他轉字串唯一的用途就是這個, 那當然換回正常法很好 11/07 22:15
→ uranusjr:如果這個字串還有用在其他地方的話就... 11/07 22:15
→ EdisonX:我倒覺得這問題後段處理較好耶,前段就處理的話等於是直接 11/07 22:18
→ EdisonX:預先定義了系統的最小誤差.另假設eps=1e-9,輸出只有兩個小 11/07 22:19
→ EdisonX:數,那 -0.00 出現也不意外. 11/07 22:19
→ loveme00835:std::signbit() 11/08 02:11
→ loveme00835:you should avoid to apply - operator on a zero val 11/08 02:25
→ linotwo:或許可以改成 float a = 0 - (float)b; 11/08 05:54
推 BlazarArc:hilorrk +1 XD 11/08 09:15