乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      float 比較【轉(zhuǎn)】

       WUCANADA 2013-09-11
      float 比較【轉(zhuǎn)】 2013-08-14 16:00:18

      分類: C/C++

      (1)浮點(diǎn)數(shù)的表示是不精確的,不能直接比較兩個(gè)數(shù)是否完全相等,一般都是在允許的某個(gè)范圍內(nèi)認(rèn)為像個(gè)浮點(diǎn)數(shù)相等。
      float 類型不能比較相等或不等,但可以比較>,<,>=,<=

      如有兩個(gè)浮點(diǎn)數(shù)a,b,允許的誤差范 圍為1e-6,則abs(a-b)<=1e-6,即可認(rèn)為a和b相等。
      用==從語法上說沒錯(cuò),但是本來應(yīng)該相等的兩個(gè)浮點(diǎn)數(shù)由于計(jì)算機(jī)內(nèi)部表示的原因可能略有微小的誤差,這時(shí)用==就會(huì)認(rèn)為它們不等。應(yīng)該使用兩個(gè)浮點(diǎn)數(shù)之間的差異的絕對(duì)值小于某個(gè)可以接受的值來判斷判斷它們是否相等,比如用
          if (fabs(price - p) < 0.000001)
      來代替
          if (price == p)
      同意樓上的,很多工程的應(yīng)用都是采用計(jì)算精確度的方式。
      定義一個(gè)精度,用差的絕對(duì)值比較,在精度范圍內(nèi)就認(rèn)為是相等的;大小可以直接比較。

      還有一種方法就是擴(kuò)大再取整,比如a=5.23,b=5.23,直接比較 a==b一般為false,但是a和b都擴(kuò)大一百倍,然后強(qiáng)制轉(zhuǎn)換為int類型,再用==比較就可以了.

      (2)float型變量和“零值”比較的方法:

      const float EPSINON 0.000001;
      if ((x >= EPSINON) && (x <= EPSINON))
      浮點(diǎn)型變量并不精確,其中EPSINON是允許的誤差(即精度),所以不可將float變量用“==”或“!=”與數(shù)字比較,應(yīng)該設(shè)法轉(zhuǎn)化成“>=”或“<=”形式。如果寫成if (x == 0.0),則是錯(cuò)誤的。
      因?yàn)?.0在計(jì)算機(jī)中可能存為0.999999或1.00001等,很難恰好是1.0

      -----------------
      4.3.3 浮點(diǎn)變量與零值比較
      【規(guī)則4-3-3】不可將浮點(diǎn)變量用“==”或“!=”與任何數(shù)字比較。
      千萬要留意,無論是float 還是double 類型的變量,都有精度限制。所以一定要
      避免將浮點(diǎn)變量用“==”或“!=”與數(shù)字比較,應(yīng)該設(shè)法轉(zhuǎn)化成“>=”或“<=”形式。
      假設(shè)浮點(diǎn)變量的名字為x,應(yīng)當(dāng)將
      if (x == 0.0) // 隱含錯(cuò)誤的比較
      轉(zhuǎn)化為
      if ((x>=-EPSINON) && (x<=EPSINON))
      其中EPSINON 是允許的誤差(即精度)。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多