浮点类型的精度问题
代碼:
?
結果:
?
那么為什么對double類型的數據進行計算得不到“精確”的結果呢?
?
我們知道在計算機中浮點數的表示方法是由一個整數(即尾數)乘以一個基數(計算機中一般為2)的整次冪得到。(類似于科學計數法,科學記數法基數為10)
float的內存結構為:符號位表示正負,1位?指數位,8位?尾數位,32位(符號位1表示負,0表示正)
指數是以2為底的,范圍是?-128?到?127,如果超過了127,則從-128開始計。?????????????????????????????????? 即:127+1=-128
尾數都省去了第1位的1,所以在還原時要先在第一位加上1。它可能包含整數和純小數兩部分,也可能只包含其中一部分,視數字大小而定。對于帶有整數部分的浮點數,其整數的表示法有兩種,當整數大于十進制的16777215時使用的是科學計數法,如果小于或等于則直接采用一般的二進制表示法。科學計數法和小數的表示法是一樣的。
小數部分則是直接使用科學計數法,形式是X?*?(?2?^?n?)。
這樣就導致浮點類型在計算機的存貯中無法精確表示。
轉載于:https://www.cnblogs.com/amiee/p/4852846.html
總結
- 上一篇: android5.0(Lollipop)
- 下一篇: Nginx 使用中文URL,中文目录路径