最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于C++浮點(diǎn)數(shù)(float、double)類型數(shù)據(jù)比較與轉(zhuǎn)換的詳解

 更新時(shí)間:2013年05月16日 17:00:47   作者:  
本篇文章是對(duì)C++中浮點(diǎn)數(shù)(float、double)類型數(shù)據(jù)比較與轉(zhuǎn)換進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
浮點(diǎn)數(shù)在內(nèi)存中的存儲(chǔ)機(jī)制和整型數(shù)不同,其有舍入誤差,在計(jì)算機(jī)中用近似表示任意某個(gè)實(shí)數(shù)。具體的說,這個(gè)實(shí)數(shù)由一個(gè)整數(shù)或定點(diǎn)數(shù)(即尾數(shù))乘以某個(gè)基數(shù)(計(jì)算機(jī)中通常是2)的整數(shù)次冪得到,這種表示方法類似于基數(shù)為10的科學(xué)記數(shù)法。
所以浮點(diǎn)數(shù)在運(yùn)算過程中通常伴隨著因?yàn)闊o法精確表示而進(jìn)行的近似或舍入。但是這種設(shè)計(jì)的好處是可以在固定的長度上存儲(chǔ)更大范圍的數(shù)。
1、將字符串轉(zhuǎn)換為float、double過程存在精度損失,只是float、double各自損失的精度不相同而已
std::string str="8.2";
float cc=atof(str.c_str());  //cc的值為8.1999998
std::string str="8.2";
double cc=atof(str.c_str());  //cc的值為8.1999999999999993
2、將float、double轉(zhuǎn)換為字符過程中可能存在精度損失,但是通過%.8lf可以規(guī)避
(1)float小數(shù)點(diǎn)前后加起來有效數(shù)字只有6位。當(dāng)給定的float有效數(shù)在6位以內(nèi)轉(zhuǎn)換為字符不會(huì)丟失精度,當(dāng)有效位數(shù)大于6位就會(huì)存在精度丟失
//精度沒有丟失
char buf[100]={'\0'};
float aa=8000.25;
sprintf(buf,"%f",aa);   //8000.250000
//精度沒有丟失
char buf[100]={'\0'};
float aa=8.00025;
sprintf(buf,"%f",aa);   buf = 8.000250
//精度丟失,存在誤差
char buf[100]={'\0'};
float aa=8000.251;
sprintf(buf,"%f",aa);  //8000.250977
//精度丟失,存在誤差此時(shí)使用.8lf也無效
char buf[100]={'\0'};
float aa=8000.251;
sprintf(buf,"%.8lf",aa); //8000.25097656
(2)double小數(shù)前后加起來的有效數(shù)字只有16位,當(dāng)給定的double有效數(shù)在16位以內(nèi)轉(zhuǎn)換為字符串不會(huì)丟失精度,當(dāng)有效位數(shù)大于16位湖影公寓存在精度丟失
存在誤差
char buf[100]={'\0'};
double aa=121.437565871234012;
sprintf(buf,"%.20lf",aa); //121.43756587123401000000
//沒有誤差
char buf[100]={'\0'};
double aa=8000.256165;
sprintf(buf,"%.8lf",aa);
std::cout <<buf<<std::endl; //8000.25616500
3、浮點(diǎn)數(shù)比較
用"=="來比較兩個(gè)double應(yīng)該相等的類型,返回真值完全是不確定的。計(jì)算機(jī)對(duì)浮點(diǎn)數(shù)的進(jìn)行計(jì)算的原理是只保證必要精度內(nèi)正確即可。
我們?cè)谂袛喔↑c(diǎn)數(shù)相等時(shí),推薦用范圍來確定,若x在某一范圍內(nèi),我們就認(rèn)為相等,至于范圍怎么定義,要看實(shí)際情況而已了,float,和double 各有不同
所以const float EPSINON = 0.00001;
if ((x >= - EPSINON) && (x <= EPSINON) 這樣判斷是可取的
至于為什么取0.00001,可以自己按實(shí)際情況定義
根據(jù)上面分析建議在系統(tǒng)開發(fā)過程中設(shè)計(jì)到字符轉(zhuǎn)換建議采用double類型,精度設(shè)置為%.8lf即可,在比較浮點(diǎn)數(shù)十建議EPSINON = 0.00000001

相關(guān)文章

  • C++中std::stringstream多類型數(shù)據(jù)拼接和提取用法小結(jié)

    C++中std::stringstream多類型數(shù)據(jù)拼接和提取用法小結(jié)

    本文主要介紹了C++中std::stringstream多類型數(shù)據(jù)拼接和提取用法小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • 解決不用sizeof求出int大小的方法

    解決不用sizeof求出int大小的方法

    本篇文章是對(duì)不用sizeof求出int大小的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • c/c++?Error:?redefinition?of?'xxx'的問題及解決方法

    c/c++?Error:?redefinition?of?'xxx'的問題及解決方法

    兩個(gè)類/文件同時(shí)引用定義ReplyInfo的頭文件,會(huì)造成頭文件中定義重復(fù)定義,本文給大家分享c/c++?Error:?redefinition?of?‘xxx’?的問題及解決方法,感興趣的朋友一起看看吧
    2023-08-08
  • C++設(shè)計(jì)模式之適配器模式

    C++設(shè)計(jì)模式之適配器模式

    這篇文章主要介紹了C++設(shè)計(jì)模式之適配器模式,本文詳細(xì)講解了C++中的適配器模式,并給出了實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2014-09-09
  • C++ 隨機(jī)數(shù)與隨機(jī)種子數(shù)的實(shí)例

    C++ 隨機(jī)數(shù)與隨機(jī)種子數(shù)的實(shí)例

    這篇文章主要介紹了C++ 隨機(jī)數(shù)與隨機(jī)種子數(shù)的實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • C++基礎(chǔ)知識(shí)實(shí)例解析(一)

    C++基礎(chǔ)知識(shí)實(shí)例解析(一)

    這篇文章主要對(duì)C++基礎(chǔ)知識(shí)實(shí)例解析,通過四個(gè)簡短的案例,鞏固大家的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-08-08
  • 用C++類實(shí)現(xiàn)單向鏈表的增刪查和反轉(zhuǎn)操作方法

    用C++類實(shí)現(xiàn)單向鏈表的增刪查和反轉(zhuǎn)操作方法

    下面小編就為大家?guī)硪黄肅++類實(shí)現(xiàn)單向鏈表的增刪查和反轉(zhuǎn)操作方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04
  • C++存儲(chǔ)持續(xù)性生命周期原理解析

    C++存儲(chǔ)持續(xù)性生命周期原理解析

    這篇文章主要為大家介紹了C++存儲(chǔ)持續(xù)性生命周期原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • C++深入了解模板的使用

    C++深入了解模板的使用

    這篇文章主要介紹了C++中模板(Template)的詳解及其作用介紹,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • FFmpeg中AVIOContext的使用方法詳解

    FFmpeg中AVIOContext的使用方法詳解

    AVIOContext是FFMPEG管理輸入輸出數(shù)據(jù)的結(jié)構(gòu)體,這篇文章主要為大家詳細(xì)介紹了這個(gè)結(jié)構(gòu)體的具體使用,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2023-08-08

最新評(píng)論

油尖旺区| 洛川县| 枞阳县| 秦安县| 青海省| 且末县| 峨山| 丁青县| 从化市| 邯郸市| 新源县| 安顺市| 东阳市| 北票市| 长寿区| 故城县| 德阳市| 万荣县| 全南县| 个旧市| 门源| 牡丹江市| 绥阳县| 玛多县| 综艺| 青浦区| 芷江| 日照市| 丰原市| 徐州市| 睢宁县| 大理市| 深州市| 肥西县| 公主岭市| 涡阳县| 长乐市| 冕宁县| 连平县| 莱西市| 多伦县|