亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C++數據類型的屬性與限制

2019-11-17 05:24:27
字體:
來源:轉載
供稿:網友

  在C++中,每一種內置的數據類型都擁有不同的屬性,其中包含的信息對設計程序來說是非常重要的,下面來看一下,<limits>庫是怎樣有助于訪問這些信息的。

  C++中約有10種截然不同的整數類型及超過3種的浮點類型,而每種數據類型都有不同的數值屬性,如數值范圍、能表示的最大位數、或各自的精度等等,這些屬性對金融、科學、圖形、數字信號處理等程序來說是極其重要的。本文討論使用<limits>庫,怎樣在程序中獲得這些基本數據類型的數值屬性。

  "一個double類型中能存儲多少位?","signed long能表示的最大正數是多少?"假如這些問題的答案對你的程序很重要,那么你怎樣以一種方便、且系統的方法來得到答案呢?答案就是:使用標準<limits>庫。

  浮點的樂章

  C++中浮點數據類型精度是有限的,某些與硬件有關的特性導致了浮點數據類型的截斷與取整?,F在,你就明白為什么2.0/3.0的結果大概是0.66666666666666663了吧,"數字噪音"通常是大多數bug的源頭,請看如下例子:

double d1=2., d2=3.;
d1/=d2; // 2/3
if (d1*10==(20./d2)) //條件本應該是"真"的,但,哎!
{
//永遠不可能執行到的代碼
do_equal();
}
  花括號中的代碼行永遠也不可能執行,因為在 == 兩邊的表達式結果會有稍微的差別,d1*10的結果是6.6666666666666661,而20./d2的結果是6.6666666666666670,正是這種浮點算法的截斷與近似值導致了此差異的發生。在此,可使用定標整數,但有時這并不是一個妥善的解決辦法,試想有一張計算復數公式的電子表格--它必須使用浮點類型,在這種情況下,小正數(epsilon)常量這個問題就來了,小正數通常為可用給定數據類型的大于1的最小值與1之差來表示。舉例來說,double類型的小正數為:

#include <iostream>
#include <limits>
using namespace std;
cout << numeric_limits<double>::epsilon( ) << endl; //輸出:2.22045e-016
  為減少if語句中數字噪音帶來的影響,可用一個檢查兩值粗略相等的表達式來代替 == 操作符。如:

if ( ((d1*10)-(20.0/d2)) <= numeric_limits<double>::epsilon())
{
do_equal();
}
  假如double類型的(d1*10)-(20.0/d2)結果不大于小正數,那么它幾乎為零,因此,兩個子表達式結果相等,應用此技巧可有效降低錯誤的閥值。例如,假如十億分之一或者更小的數值,對你的程序來說無關緊要,那么可試下以下的技巧:

const double BILLIONTH=1./1000000000;
if ( ((d1*10)-(20.0/d2)) <= BILLIONTH)
  此處請記住,小正數是最小的偏差極限。

  比double更好

  選擇一種浮點數據類型的標準,是它可以在精度無損的情況下最大存儲的十進制位數。例如,假設你的程序必須支持到16位的十進制數,那么應該使用double、long double還是用戶自定義類型呢?要解答此問題,可使用numeric_limits::digits10常量,它會告訴你在精度無損情況下某種類型可表示的最大十進制位數:

cout<<numeric_limits<double>::digits10<<endl;//輸出:15
  看起來double并不支持這種精度,那么long double呢?

cout<<numeric_limits<long double>::digits10<<endl; //輸出:18
  對了,它就可以。請注重,digits10對整型數也同樣適用:

cout<<numeric_limits<long>::digits10<<endl; //輸出:9
  最大值與最小值

  最大值與最小值即是對相應類型調用numeric_limits::max()和numeric_limits:min()所得到的值:

cout<<numeric_limits<int>::max()<<endl;// 2147483647
  無限的<limits>

  在IEC 559規范實現中,浮點數據類型可表示為"不是一個數字"或NaN。NaN是一種非凡的編碼,其代表某種非法數字,可由非法指令產生,或意為指示一個不應被忽略的數值。假如出現在表達式中的NaN沒有發出一個"信號",則其為"安靜"狀態;否則,其為一個發"信號"的NaN。下面的例子檢查在目標平臺上支持哪種NaN類型,并把NaN的值賦給一個變量:

double d=0;
if(numeric_limits<double>::has_quiet_NaN)
d=numeric_limits<double>::quiet_NaN();
else if (numeric_limits<double>::has_signaling_NaN)
d=numeric_limits<double>::signaling_NaN();
else cerr<<"NaN for double isn't supported";
  無限在此是一種非凡的情況,其通常由被零除或其他操作產生。下例代碼檢查目標平臺上是否定義了一種非凡的無限碼,并把此值賦給一個變量:


float f=0;
if(numeric_limits<float>::has_infinity)
f=numeric_limits<float>::infinity();
else cerr<<"infinity for float isn't supported";

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
综合久久五月天| 国产精品免费网站| 国产精品日韩av| xxxxxxxxx欧美| 欧美乱大交做爰xxxⅹ性3| 国产精品久久久久久久久久东京| 操91在线视频| 亚洲男人天堂网站| 欧美成人自拍视频| 91久久综合亚洲鲁鲁五月天| 精品久久久久久中文字幕大豆网| 91最新在线免费观看| 久久精品91久久香蕉加勒比| 97视频网站入口| 日韩在线激情视频| 亚洲91精品在线| 欧美一区二粉嫩精品国产一线天| 亚洲有声小说3d| 日韩精品视频中文在线观看| 欧美在线一区二区视频| 4438全国成人免费| 日韩精品极品在线观看播放免费视频| 欧美日韩精品国产| 在线观看欧美成人| 欧美激情在线视频二区| 亚洲精品欧美一区二区三区| 川上优av一区二区线观看| 狠狠做深爱婷婷久久综合一区| 国产精品久久久久999| 亚洲级视频在线观看免费1级| 77777少妇光屁股久久一区| 精品一区二区三区四区在线| 欧美怡春院一区二区三区| 国产亚洲视频中文字幕视频| 超碰精品一区二区三区乱码| 久久影视电视剧免费网站清宫辞电视| 日韩av在线一区| 亚洲激情 国产| 久久天天躁狠狠躁夜夜躁| 午夜精品一区二区三区视频免费看| 日本久久久久久久久| 国产亚洲激情视频在线| 国产亚洲精品日韩| 97在线视频一区| 少妇精69xxtheporn| 国产精品视频网址| 92福利视频午夜1000合集在线观看| 欧美精品激情在线观看| 亚洲free性xxxx护士hd| 日韩精品黄色网| 九九精品在线播放| 911国产网站尤物在线观看| 国产精品久久视频| 欧美一区二区大胆人体摄影专业网站| 亚洲国内精品在线| 欧美麻豆久久久久久中文| 国产精品久久久久久久av大片| 欧美日韩一区二区在线播放| 亚洲欧美激情在线视频| 欧美国产视频日韩| 日韩精品在线观看网站| 国产精品久久久久av免费| 尤物yw午夜国产精品视频| 久久精品亚洲国产| 青青久久av北条麻妃黑人| 国产成人av在线播放| 在线视频免费一区二区| 日韩一区二区三区国产| 日韩欧美成人精品| 精品久久久国产精品999| 精品国偷自产在线视频99| 欧美日韩一区二区在线播放| 中文字幕在线看视频国产欧美| 在线观看国产精品淫| 97超视频免费观看| 亚洲偷熟乱区亚洲香蕉av| 成人观看高清在线观看免费| 一本大道香蕉久在线播放29| 久久精品青青大伊人av| 国产精品久久77777| 欧美午夜视频在线观看| 69av视频在线播放| 欧美中文字幕在线| 热re91久久精品国99热蜜臀| 国产成人精品午夜| 国产精品欧美亚洲777777| 中文综合在线观看| 国产在线久久久| 国产成人精品亚洲精品| 成人妇女淫片aaaa视频| 色噜噜久久综合伊人一本| 亚洲精品国产综合久久| 亚洲精品99久久久久中文字幕| 国产成人av在线| 日韩欧美精品免费在线| 91香蕉国产在线观看| 欧美国产精品日韩| 亚洲字幕一区二区| 高清欧美性猛交xxxx| 久久精品国产v日韩v亚洲| 热门国产精品亚洲第一区在线| 亚洲精品国产综合区久久久久久久| 在线日韩日本国产亚洲| 青青草国产精品一区二区| 免费97视频在线精品国自产拍| 57pao国产精品一区| 国产精品一区二区三区免费视频| 亚洲欧美成人精品| 亚洲精品自在久久| 欧美日韩免费观看中文| 日韩在线视频免费观看| 92裸体在线视频网站| 中文字幕日本欧美| 亚洲国产成人一区| 亚洲白拍色综合图区| 国产精品国产福利国产秒拍| 夜夜嗨av色综合久久久综合网| 91av免费观看91av精品在线| 欧美在线免费看| 欧美视频免费在线观看| 97视频com| 国产精品白嫩初高中害羞小美女| 亚洲欧美日韩在线高清直播| 91久久夜色精品国产网站| 欧美精品制服第一页| 久久久精品久久久久| 色一区av在线| 91网站免费观看| 成人精品久久一区二区三区| 亚洲午夜精品久久久久久久久久久久| 国产精品一久久香蕉国产线看观看| 欧美成人三级视频网站| 精品国产鲁一鲁一区二区张丽| 青青青国产精品一区二区| 91精品啪aⅴ在线观看国产| 久久人人爽人人爽人人片av高清| 欧美裸体xxxx| 国产精品视频在线播放| 日韩欧美在线字幕| 成人福利视频在线观看| 青草青草久热精品视频在线观看| 欧美性色xo影院| 亚洲美女免费精品视频在线观看| 91精品国产综合久久香蕉| 亚洲欧美成人网| 国产精品免费一区二区三区都可以| 亚洲男人第一av网站| 日韩视频免费中文字幕| 亚洲精品在线视频| 国产精品一区二区三区毛片淫片| 精品无码久久久久久国产| 精品久久久免费| 成人午夜小视频| 久久久久久九九九| 亚洲第一二三四五区| 欧美日韩成人免费| 久久久久久国产精品三级玉女聊斋| 日韩国产欧美精品在线| 日韩av电影国产| 亚洲午夜未满十八勿入免费观看全集| 欧美性猛交xxxx乱大交极品| 欧美一级视频一区二区| 欧美激情欧美狂野欧美精品| 国产丝袜精品第一页|