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