国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C++浮點數類型詳情

C++浮點數類型詳情

2022-02-19 16:08Coder_LT C/C++

這篇文章主要介紹了C++浮點數類型,浮點數是C++的第二組基本類型,它能夠表示帶小數部分的數字。不僅如此,浮點數的范圍也比int更大,可以表示更大范圍的數字。下面來我們大家一起來學習學習內容

1、浮點數

浮點數是C++的第二組基本類型,它能夠表示帶小數部分的數字。不僅如此,浮點數的范圍也比int更大,可以表示更大范圍的數字。

我們都知道在計算機當中,所有數據本質上都是轉化成二進制存儲的。整數很簡單,存儲的就是轉化成二進制之后的01串,那么浮點數又是如何存儲的呢?

很容易猜到的是浮點數存儲的結果也是二進制,但相比于整型直接轉化成二進制要復雜一些。

它需要先表示成下面這行式子:

C++浮點數類型詳情

這里的n即我們要存儲的浮點數,s表示符號位,m是尾數,而e則是階數。

符號位很好理解,它和整型當中的符號位一樣,0表示正數,1表示負數。m表示尾數,。我們這么看很抽象,來看一個例子,比如3.0,轉化成二進制是,相當于。那么,。

我們了解了浮點數的表示方式,那么它又是如何存儲在計算機當中的呢?這需要我們進一步地剖析其中的細節。

2、關于m

首先是mm被定義成一個大于等于1,小于2的小數。我們可以簡單寫成1.xx,其中xx表示的就是小數的部分。

既然它總是大于等于1,小于2的,那么它的個位一定是1,我們就可以將它省略,僅僅看之后小數的部分。小數的部分,我們同樣使用二進制來逼近。比如0.625,可以表示成0.5 + 0.125,即,表示成二進制就是,只不過這里它的最高位是從-1開始的。

以32位的浮點數為例,除去1位表示符號,8位表示階數之后,還有23位留給m。由于我們舍掉了小數點之前的1,所以我們的階數是從-1開始的,理論上等價于24個二進制位。

3、關于e

在浮點數存儲當中,e是一個無符號整數。以32位浮點數為例,e一共有8位,可以表示0-255。

但e是可以為負數的,根據IEEE 754的規定,e的真實值必須再減去一個中間數。對于8位的e,它的中間數是127。比如e的實際值是10,但是存儲的時候需要存儲成127+10=137

除此之外,e還有另外三種情況:

  • e不全為0,或全為1時,采用上述的規則表示
  • e全為0時,e等于1-127,有效數字m不再默認加上1,這樣是為了還原0.xxx的小數,以及接近于0的數
  • e全為1時,如果有效數字m全為0,表示無窮大,如果m不全為0,表示nan(not a number)

關于e的規則看起來有些復雜,初看覺得有些難以理解,為什么要用減去中間值的設計,而不用符號位?后來仔細思考了一下才發現,如果引入符號位很難區分0.xxx以及e就是等于0的情況,雖然也可以特判處理,但就沒有現在這樣優雅了。

覺得上文看不懂的小伙伴可以直接略過這段,畢竟這個是浮點數的實現原理,算是很底層的內容了,C++ primer上對于這部分也沒有過多闡述。

4、浮點數的使用

C++當中有兩種浮點數的書寫方式,第一種是使用常規的小數點表示法:

?
1
2
double a = 1.23;
float b = 3.43;

另外一種寫法是科學記數法,寫成:

?
1
2
double a = 2.45e8;
double b = 1e-7;

2.45e8表示,e之后可以跟正數也可以跟負數,但數字當中不能有空格。

5、浮點數類型

和C語言一樣,C++也有三種浮點數類型:float,doublelong double。和整型一樣,這三種類型都是浮點數,只不過表示的范圍不同。

浮點數的范圍有兩個部分綜合決定,一個部分是有效數字。比如14179是5位有效數字,而14000只有兩位,因為后面三個0都是填充位,有效數字的位數不依賴小數點的位置。C++當中要求,float通常表示7位有效數字,double通常16位位,而long double至少和double一樣。

另外,它們能夠表達的指數范圍至少是-37到37。一般來說,float一共是4個字節32位,而double是8個字節64位,當然這也取決于具體的運行環境。

6、注意事項

關于浮點數的使用有幾點注意事項,千萬要注意。

  • cout輸出浮點數會刪除結尾的0
  • 書寫浮點數常量時默認為double類型,如果需要強制表示為float類型,請在結尾加上后綴f或者F,如:2.34f
  • 由于浮點數有精度,不能直接判斷兩個浮點數是否相等,很有可能得不到預期結果,正確的做法是判斷精度范圍,

如:

?
1
2
3
4
5
double epsilon = 1e-8;
// 判斷a是否和b相等
if (abs(a - b) < epsilon) {
    // todo
}

判斷兩個浮點數a和b是否相等,等價于兩者的差的絕對值小于某一個精度。

范圍問題,如運行下列代碼將得到錯誤的結果:

?
1
2
3
4
float a = 2.3e22f;
float b = a + 1.0f;
 
cout << b - a << endl;

輸出的結果將是0,因為2.3e22是一個小數點左邊有23位的數字,加上1之后,就是在第23位加上1。但是float類型只能表示數字中的前6位或者前7位,表示不了這么高的精度,因此這個+1的操作完全沒有生效。

這個問題是一個大坑,一不小心就會中招,千萬要小心。

到此這篇關于C++浮點數類型詳情的文章就介紹到這了,更多相關C++浮點數類型內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

注:文章轉自微信眾號:Coder梁(ID:Coder_LT)

延伸 · 閱讀

精彩推薦
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
主站蜘蛛池模板: 国产一区二区三区在线免费观看 | 日韩中文字幕在线免费观看 | 久久99精品久久久久久国产越南 | 国产片在线观看 | 性刺激久久久久久久久九色 | 中文字幕啪啪 | 亚洲免费观看在线视频 | 91一区二区 | 久久午夜视频 | 国产高清一区 | 久久国产精品久久久久久电车 | 精品在线视频一区 | 天天操人人干 | av小说在线观看 | 久久9999 | 黄色av免费 | 国产成人99久久亚洲综合精品 | 成人免费一区二区三区视频软件 | 国产综合精品一区二区三区 | 日韩一区二区三区四区 | 午夜精品久久久久久久久 | 国产欧美在线观看 | 超级黄色毛片 | 日韩中文字幕一区 | yw193.com尤物在线 | 一级毛片视频 | 亚洲精品久久久久久动漫 | 亚洲天堂久久 | 成人免费av电影 | 久久人爽 | 中文字幕一区二区在线观看 | 日韩成人在线一区 | 全部免费毛片在线播放 | 免费在线成人网 | 国产黄大片| 亚洲成人av| 中文字幕av一区 | 懂色一区二区三区av片 | 黄色免费高清网站 | 国产综合亚洲精品一区二 | 欧美精品一二三区 |