无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

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

[編程小白]小數(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ù)的精度是如何損失的?的評論 (共 條)

分享到微博請遵守國家法律
宝山区| 惠来县| 延吉市| 工布江达县| 霍林郭勒市| 平阳县| 会理县| 广州市| 铜鼓县| 北票市| 高雄县| 西贡区| 洛川县| 双峰县| 东辽县| 中西区| 平遥县| 余庆县| 罗田县| 定州市| 苍梧县| 鄂尔多斯市| 绍兴市| 堆龙德庆县| 丰原市| 浏阳市| 无极县| 阳东县| 威宁| 齐河县| 漾濞| 平定县| 西华县| 昌都县| 宁武县| 龙南县| 达州市| 镇宁| 商南县| 昭觉县| 孝义市|