[注意]通達信整數減法有時會算錯! [通達信]
-
咨詢內容:
兩個整數相減 20130625 - 19000000 ,結果應該是1130625 ,可通達信算出來的卻是 1130624!
很簡單的測試,自定義指標
結果1:20130625 - 19000000;
結果2:20130708 - 19000000;
結果1是錯誤的,而結果2又是對的。
目前在內核5.85和5.83 我都發現了這樣的問題,通達信連最基礎的整數減法都能算錯,還有什么不能算錯的?
看圖
此主題相關圖片如下345.jpg:
-
通達信技術部:
這個問題確實是個嚴重的問題。很顯然,它在內部是把兩個整數估計用浮點數的方法來進行計算了。
-
通達信客服:
是的。數據類型所限,不支持8位整數。
-
網友交流:
以下是引用vs9841在2013-7-16 16:30:00的發言:
這個問題確實是個嚴重的問題。很顯然,它在內部是把兩個整數估計用浮點數的方法來進行計算了。
確如樓主所言,將20130625存在float中再輸出就變成了20130624了。
一段c語言測試:
#include
#include
int main()
{
float a1 = 20130625 ;
printf("a1=%f\n",a1) ;
return 0;
}
- 網友交流: 官方到現在還沒有出來解決這個問題 。。那個float換成double就可以。C語言中這個float類型通常是32位,其中有8位用于表示指數部分和符號。24位用于表示其余部份,其中C保證至少小數點后6位有效,按照浮點數在內存中表示方法。float類型轉換整數精度應該是6+1 =7位,所以用float類型轉換8位整數會損失很多精度,至少損失一半的8位整數精度。所以說這個問題非常嚴重
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 1145508240 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容