<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

計算機基礎知識之處理小數1

jf_78858299 ? 來源:前端柒八九 ? 作者:前端柒八九 ? 2023-03-31 16:10 ? 次閱讀

將0.1累加100次也得不到10

我們來一個計算機運算錯誤的例子。

function sum(){
    let sum = 0;
    for(let i=1;i<=100;i++){
        sum +=0.1;
    }
    console.log(sum)
}

我們在瀏覽器的控制臺中,運行sum(),得到的運行結果為9.99999999999998。這顯然和我們的九年義務教育所教導的 「背道而馳」 。

有句話說, 「雪崩的時候,沒有一片雪花是無辜的」 。在這段代碼中,程序沒錯,計算機也沒有發生故障,當然和所使用的語言也沒有關系(選用其他的高級語言可能運算結果不同)。如果硬要找一個背鍋的,那就是 「計算機處理小數的機制」 。


用二進制數表示小數

計算機底層知識之二進制中我們講過,由于計算機內部所有的信息都是以二進制數的形式來處理,因此, 「整數和小數并無差別」 。

在說明計算機如何用二進制數表示小數的具體方法前,我們先嘗試將1011.0011這個有小數點的二進制數轉換成十進制數。

小數點 「前面」 部分的轉換方法在計算機底層知識之二進制中介紹過。只需將各 「數位」 數值和 「位權」 相乘,然后再將相乘的結果相加即可實現。其實,針對小數點后面的部分,也是 「照貓畫虎」 ,也是將各 「數位」 數值和 「位權」 相乘的結果相加即可。

圖片

二進制數小數轉換成十進制數

二進制數小數點前面部分的**「位權」**

  • 第一位是20次冪
  • 第二位是21次冪
  • 第三位是22次冪
  • 以此類推

而小數點后面部分的**「位權」**

  • 第一位是2-1次冪
  • 第二位是2-2次冪
  • 第三位是2-3次冪
  • 以此類推

?0次冪前面的位的位權按照1次冪、2次冪····的方式**「遞增」**

0次冪后面的位的位權按照-1次冪、-2次冪····的方式**「遞減」**

?


計算機運算出錯的原因

?計算機運算出錯的原因:「有一些十進制數的小數無法轉換成二進制」

?

小數點后4位用二進制數表示時的數值范圍為0.0000~0.1111。這里只能表示0.5、0.24、0.125、0.0625這四個二進制數小數點后面的位權組合而成(相加總和)的小數。

圖片

?可以看出:「二進制數是連續的,十進制數是非連續的」

?

在前面講二進制的時候,我們說,根據IC引腳個數不同,我們可以表示位數不同的二進制數。我們可以通過增加引腳數,也就是增加二進制小數點后面的位數,與其相對應的十進制數的個數也會增加, 「但是不管增加多少位,2的-〇〇次冪怎么相加都無法得到0.1這個結果」 。

實際上,十進制數0.1轉換成二進制后,會變成0.00011001100···1100循環)這樣的 「循環小數」 。這和用十進制數來表示1/3是一樣的道理。

?計算機這個 「功能有限」 的機器設備,是無法處理 「無限循環」 的小數的

?

因此,在遇到 「循環小數」 時,計算機就會根據 「變量數據類型」 所對應的長度將數值從 「中間截斷」 或者 「四舍五入」 。

然后,我們再結合我們上面的例子,一個 「循環小數」 在進行存儲的時候,已經被 「掐頭去尾」 ,而偏偏針對這個值,又進行了N多次處理。不怕你不努力,就怕你,持之以恒的向偏離既定軌道的方向上移動,那么結果可想而知,是永遠不會達到最終想要的結果。


浮點數

1011.0011這樣帶小數點的表現形式,在計算機內部是無法使用的。

很多編程語言中都提供了兩種表示小數的數據類型,分別是 「雙精度浮點數」「單精度浮點數」 。

  • 「雙精度浮點數」64位表示小數
  • 「單精度浮點數」32位表示小數

「浮點數」 是指用 「符號」 、 「尾數」 、 「基數」「指數」 這四部分表示的小數。

圖片

?計算機內部使用的是二進制數,所以 「基數是2」 ,因此,實際的數據中往往不考慮基數。只用 「符號」 、 「尾數」 、 「指數」 這三部分就可以表示 「浮點數」 。

?

浮點數表現形式

浮點數的表現方式有很多中,我們采用IEEE標準來解釋。

圖片

雙精度浮點數和單精度浮點數在表示同一個數值時 「使用的位數」 不同。

「符號部分」 是指使用一個 「數據位」 來表示符號。「數據位是1時表示負,為0時表示正或者0」

?數值的大小用 「尾數部分」「指數部分」 來表示。即用 「尾數部分 × 2的指數部分次冪」 的形式來表示。

?

  • 「尾數部分」 用的是**「將小數點前面的值固定為1的正則表達式」**
  • 「指數部分」 用的是**「EXCESS系統表示」**

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 計算機
    +關注

    關注

    19

    文章

    6653

    瀏覽量

    84587
  • 程序
    +關注

    關注

    114

    文章

    3631

    瀏覽量

    79565
  • 代碼
    +關注

    關注

    30

    文章

    4557

    瀏覽量

    66832
收藏 人收藏

    評論

    相關推薦

    計算機基礎知識

    世界上第一臺數字式電子計算機是由美國賓夕法尼亞大學的物理學家約翰 莫克利(John Mauchly)和工程師普雷斯伯 ??颂?Presper Eckert)領導研制的取名為ENIAC
    發表于 03-08 15:50

    計算機組成原理基礎知識

    計算機組成原理基礎知識,前言參考:《王道計算機組成原理》學習筆記總目錄+思維導圖2019 王道考研 計算機組成原理第一章 計算機系統概述1.
    發表于 07-16 07:48

    計算機軟硬件知識

    一、計算機軟硬件知識1.計算機的發展和應用計算機的誕生: 第一臺計算機 ENIAC 于 1946
    發表于 07-22 06:31

    計算機網絡基礎知識了解

    計算機網絡技術復習一、 計算機網絡基礎知識了解:計算機網絡(Internet)的發展 面向終端的計算機網絡(單個
    發表于 07-26 06:27

    計算機是如何進行分類的

    計算機一級考試基礎知識練習題(三)一、單選題1、第一臺電子數字計算機的運算速度為每秒______。A:500000次B:50000次C:5000次D:500次答案: C2、
    發表于 09-13 06:11

    計算機基礎知識點匯總,不看肯定后悔

    計算機基礎知識點匯總,不看肯定后悔
    發表于 11-15 06:03

    計算機基礎知識

    前言《MSP430單片機應用基礎與實踐》(華中科技大學出版社)------第0章------計算機基礎知識(本文章作備忘錄使用)1.進制轉換2.數值數據的表示3.計算機的碼制
    發表于 11-29 06:03

    計算機簡介

    1計算機基礎知識1.計算機簡介1.1計算機定義:按照一定邏輯
    發表于 12-23 06:45

    計算機基礎知識選擇題

    計算機基礎知識選擇題 1.微型計算機是由( )、存儲器、輸入設備和輸出設備等部件組成的。  A. 硬盤 B. 軟盤 C. 鍵盤 D. 運算控制單元 2.一臺微機型號
    發表于 03-03 08:32 ?89次下載

    計算機基礎知識練習題

    計算機基礎知識練習題(一)單選題:1.計算機的描述中,( )是錯誤的。A. 計算機是一種可供計算的機器  、B.
    發表于 03-03 08:33 ?70次下載

    計算機基礎知識試題

    計算機基礎知識試題 1、CPU的主要功能是進行(     )。
    發表于 10-25 10:59 ?7843次閱讀

    計算機總線技術基礎知識

    計算機總線技術基礎知識 任何一個微處理器都要與一定數量的部件和外圍設備連接,但如果將各部件和每一種外圍設 備都分別用一
    發表于 05-22 08:52 ?782次閱讀

    計算機基礎知識介紹

    計算機基礎知識計算機基礎知識計算機基礎知識
    發表于 12-03 16:13 ?0次下載

    計算機控制技術的基礎知識點說明

    本文檔的主要內容詳細介紹的是計算機控制技術的基礎知識點說明包括了:1 計算機控制系統的概念,2 計算機控制系統的組成,3 計算機控制系統的分
    發表于 04-27 08:00 ?5次下載
    <b class='flag-5'>計算機</b>控制技術的<b class='flag-5'>基礎知識</b>點說明

    計算機基礎知識之處理小數2

    有句話說, 「雪崩的時候,沒有一片雪花是無辜的」 。在這段代碼中,程序沒錯,計算機也沒有發生故障,當然和所使用的語言也沒有關系(選用其他的高級語言可能運算結果不同)。如果硬要找一個背鍋的,那就是 「計算機處理
    的頭像 發表于 03-31 16:10 ?927次閱讀
    <b class='flag-5'>計算機</b><b class='flag-5'>基礎知識</b><b class='flag-5'>之處理</b><b class='flag-5'>小數</b>2
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>