最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

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

分享到微博請遵守國家法律
乡城县| 武邑县| 石嘴山市| 密云县| 申扎县| 博湖县| 九龙县| 大足县| 民县| 台安县| 罗城| 安阳市| 静海县| 资溪县| 辽阳县| 会同县| 石棉县| 揭阳市| 卫辉市| 东莞市| 巨鹿县| 巴里| 呈贡县| 郎溪县| 聊城市| 略阳县| 扬州市| 文山县| 湖州市| 化州市| 中超| 乌什县| 双牌县| 卫辉市| 遵义市| 和龙市| 铜鼓县| 绿春县| 偃师市| 蓬莱市| 内乡县|