五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

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

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

分享到微博請遵守國家法律
玉林市| 昌江| 闽侯县| 竹山县| 家居| 孝义市| 神池县| 灵台县| 九龙城区| 博罗县| 溧阳市| 连州市| 明水县| 榕江县| 涞水县| 郎溪县| 万载县| 平凉市| 博乐市| 武陟县| 姚安县| 讷河市| 临高县| 齐齐哈尔市| 陇西县| 北海市| 新竹县| 拉孜县| 岚皋县| 榆林市| 高唐县| 海宁市| 德保县| 特克斯县| 建阳市| 朔州市| 尚义县| 县级市| 公安县| 汉源县| 巫溪县|