問題是這樣的,當我從表中向視圖添加兩個或更多雙精度數據,而不是給我正確的結果時,它會添加大約十個左右的數字。例如0.5 + 1.5 = 1.99999999998或5.5 + 8.5 = 14.0000000001。有任何想法嗎? (我知道這是一個n00b的問題,我記得在9年級的考試中不得不處理類似的東西,但我不記得當時我是如何做到的):Mysql的計算問題:1 + 1 = 1.999999999
5
A
回答
9
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_format
您可以格式化數字這樣,如果這就是你的後?
2
不要指望整數當你使用浮點類型時。
3
This article解釋這個問題非常好。
簡而言之,非常大或非常小的浮點數會導致計算過程中精度的降低。
2
不知道,如果你正在尋找一個解釋或解決方案,但因爲你已經得到了指針好解釋....
如果你需要你的號碼錶現得像整數,利用整數。如果您需要精確度有限(即小數點後兩位,表示貨幣的字段),則無論如何都要將其存儲爲整數,但將其乘以10的任何因子,以便在放入小數點後襬脫小數數據庫並且在您將其拉回時分開。
因此,如果您要代表的是一個成本爲3.99美元的小部件,則應將399放入WIDGET.cost字段。
說不上來,如果適用於您的情況或沒有。但一般的經驗法則是浮點數總是僅僅是近似值。 :-)如果精度很重要,找出使用整數的方法。
8
添加1和1爲浮點或雙精度不應導致任何東西,但2
我覺得很難相信,0.5 + 1.5就出來什麼,但2
所有這些數字可以用二進制浮點正確表示。
我不想說我不相信你的例子,但我不知道。 :-)
但是,我相信你可能會遇到諸如1.1之類的問題。
爲什麼?因爲1/10變成二進制的重複小數。
,問題就來嘗試轉換浮點十進制和二進制表示法之間的點對點數字時。一些數字成行很好,但其他的則只能近似。然而,如果你的例子真的是這樣工作的,我不知道發生了什麼,我很想知道。但是,如果你的例子真的這樣工作,我不知道發生了什麼,我很想知道。
4
浮點數總是僅僅是近似值。 :-)如果精度問題,想出一個辦法來使用整數。
根據我的經驗,當我使用十進制數據類型,而不是浮點/雙,我總是得到精確的結果。
相關問題
- 1. 1&1與JAVA問題的Mysql連接
- 2. 問題與MySql INSERT MAX()+ 1
- 3. 類圖設計問題:1到n和1到1
- 4. 1不== 1,布爾問題
- 5. -1 #IND問題
- 6. 如何計算0111爲0 + 1 + 1 + 1 = 3在php中
- 7. SAS EG lagcalculation問題,而不是計算拉斯爲T - T-1
- 8. 如何計算^(1/n)?
- 9. 計算能力爲-1
- 10. $ ARGV [1] Perl問題
- 11. 1 has_many:..,:through和1 has_and_belongs_to_many:..問題?
- 12. PySchools - 主題1問題7
- 13. OpenGL:計算1:1像素比率的z值
- 14. 問題的在1個VBS
- 15. 建模1-n的問題
- 16. 的Javascript 1班輪問題
- 17. MySQL的GROUP BY和計算行問題
- 18. MYSQL:1
- 19. javascript問題:var a =「1」; b = {a:a},b變體不是{「1」:1}
- 20. Java。計算1到5的總和
- 21. 字節數組的計算SHA-1
- 22. 如何計算C++中的-1模1000000007
- 23. 計算1天后的OpenCV異常
- 24. 錯誤的計算日期「-1天」
- 25. MySQL的 - 在1
- 26. MySQL日期問題 - 如何計算?
- 27. 爲什麼從1970年1月1日起計算日期?
- 28. 在Haskell中計算`[1,x^1,x^2,...,x^n]`
- 29. 蟒蛇3.6幾輪了十進制計算自動1或-1
- 30. 如何計算「1 + 1」不使用eval(解析(......?
你到底在問什麼?你想知道爲什麼會發生這種行爲嗎?或者你只是想提供正確的結果? – Velociraptors 2009-07-29 20:05:13
這是標準的浮點問題。請爲[浮點數]搜索超過100個類似的問題。其中一個可能會幫助你。 – 2009-07-29 20:05:48
我的高中數學老師告訴我們.9999 ... = 1,所以我不明白你的問題是什麼? :) – Jason 2009-07-29 20:06:50