首页
/
每日頭條
/
生活
/
c語言保留兩位小數的入門辦法
c語言保留兩位小數的入門辦法
更新时间:2024-10-05 01:19:08

  c語言保留兩位小數的入門辦法(很多學C語言的人不知道的事兒)(1)

  小數如何存儲 無論是單精度還是雙精度在存儲中都分為三個部分:

  符号位(Sign) : 0代表正,1代表為負指數位(Exponent):用于存儲科學計數法中的指數數據,并且采用移位存儲尾數部分(Mantissa):尾數部分 其中float的存儲方式如下圖所示:

  c語言保留兩位小數的入門辦法(很多學C語言的人不知道的事兒)(2)

  而雙精度的存儲方式為:

  c語言保留兩位小數的入門辦法(很多學C語言的人不知道的事兒)(3)

  float和double類型的數據在内存中的保存形式是一樣的,隻是double表示的範圍更大而已。因此,這裡隻介紹float的表示方法。double同理。

  轉換舉例 舉例:22.8125 轉二進制的計算過程:

  整數部分:除以2,商繼續除以2,得到0為止,将餘數逆序排列。

  c語言保留兩位小數的入門辦法(很多學C語言的人不知道的事兒)(4)

  得到22的二進制是10110

  小數部分:乘以2,取整,小數部分繼續乘以2,取整,得到小數部分0為止,将整數順序排列。

  

  得到0.8125的二進制是0.1101

  結果:十進制22.8125等于二進制00010110.1101

  程序驗證 假設,我現在有一個數據-12.25。那麼這個數據在計算機内部是如何存儲的呢?首先,将這個浮點數轉換成二進制數。經過轉換,得到的二進制數為:1100.01。接着,将這個二進制數用科學計數法來表示,1.10001 * 2 ^ 3。由于這個數是負數。所以,符号位為1;指數位為127 3 = 130;尾數(小數)為10001。然後,将指數130轉換為二進制數10000010。最後,由于float占4個字節,也就是32位,所以,-12.25在内存中表示為:11000001010001000000000000000000,将這個數用十六進制表示為0xC1440000。那麼,我們的計算結果對不對呢?我們可以用程序來驗證一下。

  c語言保留兩位小數的入門辦法(很多學C語言的人不知道的事兒)(6)

  完全正确

  尾言 如果閣下沒有學習位運算不妨關注小編的零基礎視頻教程:

  《C語言51課視頻教程合集》

  《C語言十大新手練手項目實戰》

  《C語言數據結構那點事兒》

  通俗易懂,深入淺出,一個視頻隻講一個知識點。視頻不深奧,不需要鑽研,在公交、在地鐵、在廁所都可以觀看,随時随地漲姿勢,人人都可以學習的C語言課程

  ,

Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
Copyright 2023-2024 - www.tftnews.com All Rights Reserved