国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網 會員登陸 & 注冊

[編程小白]小數(shù)的精度是如何損失的?

2020-05-28 11:24 作者:玩游戲的程序猿  | 我要投稿

本篇內容僅面向小白,如有錯誤,請指正。

本篇為原創(chuàng),轉載請注明出處。

初學編程,大家都知道,我們把小數(shù)叫做浮點數(shù),浮點數(shù)分為單精度浮點數(shù)(Float)和雙精度浮點數(shù)(Double),不管是什么精度,在計算機里面都是以二進制的方式存儲的。

要想知道精度為什么損失,我們先要知道浮點數(shù)是如何轉為二進制的。

舉個例子,把10.4轉為二進制,步驟是這樣的:

一、整數(shù)部分轉為二進制:

①取整數(shù)部分10,除以2,得5,余數(shù)是0,這個0是整數(shù)部分最右邊一位,即0

②將上一步的商再除以2:5÷2=2……1,這個余數(shù)是整數(shù)部分右邊第二位,即10

③重復第②步,把得到的余數(shù)依次寫到左邊,直到商為0。最終得到結果:1010

整數(shù)轉換為二進制


二、轉換小數(shù):

①先把整數(shù)部分轉為二進制,再加上小數(shù)點:1010.

②取小數(shù)部分乘以2:0.4×2=0.8

③取上面結果的整數(shù)部分,拼接到結果中:1010.0

④重復第②③步,直到小數(shù)部分變?yōu)?

小數(shù)部分轉為二進制


最后我們得到了一個無限循環(huán)小數(shù):1010.01100110011001100110011……

但是我們知道,計算機中浮點數(shù)是有位數(shù)限制的,F(xiàn)loat是32位,Double是64位,而上面轉換之后的小數(shù)是無限位數(shù)的,所以存儲的時候會舍棄后面的小數(shù),這就導致了小數(shù)的精度損失。當然了,保留的位數(shù)越多,損失的精度越小,所以說Double精度更高,但是使用的資源也更多。如果對精度要求不那么高,也可以選Float。

使用多個損失了精度的小數(shù)進行運算,它們損失的精度可能會累加。

C#代碼
C#代碼

附:數(shù)字轉為二進制代碼:

小數(shù)轉為二進制代碼

調用方法及結果:

調用


[編程小白]小數(shù)的精度是如何損失的?的評論 (共 條)

分享到微博請遵守國家法律
兴安县| 泽州县| 若羌县| 嘉善县| 改则县| 青岛市| 北安市| 吕梁市| 宁蒗| 澄江县| 武穴市| 上栗县| 门头沟区| 徐水县| 宁海县| 合水县| 县级市| 湄潭县| 盘锦市| 白河县| 平谷区| 和静县| 睢宁县| 东阳市| 原阳县| 英德市| 张家口市| 尼木县| 白玉县| 平南县| 图木舒克市| 宁波市| 重庆市| 临朐县| 永川市| 门源| 娄底市| 松滋市| 桐城市| 灵台县| 天柱县|