1. 程式人生 > >浮點數相比較

浮點數相比較

錯誤 可以轉化 tdi 存儲 完美 大量 include 比較 void

眾所周知,數據在計算機中的存儲都是以二進制存儲的,整數都可以轉化為二進制的形式,

可以完美轉化,不損失精度。那麽分數呢?是怎麽存儲的呢?答案肯定不是完美存儲,是有部分

精度損失的,近似存儲的。例如整形數8和浮點數8.0是不一樣的,有微小的差別,一般進行運算時

不會體現出來,但如果需要大量計算時就會發生錯誤。故進行浮點數比較時不能夠進行完全相等的

比較,因為他們在計算機存儲時本身就不是完全相同的,應該使用大於等於和小於等於。

例如:

啤酒每罐 2.3 元,飲料每罐 1.9 元。小明買了若幹啤酒和飲料,一共花了 82.3

元,我們還知道他買的啤酒比飲料的數量少,請你計算他買了幾罐啤酒。

#include<stdio.h>

int main(void)

{

for(int i=1;i*2.3<82.3;i++)

for(int j=i+1;i*2.3+j*1.9<=82.3;j++)//因為 i 比 j 小,所以 j 從 i+1 開始

{

if(i*2.3+j*1.9>=82.3-0.000001&&i*2.3+j*1.9<=82.3+0.000001) //浮點數相比較

//不可寫成if(i*2.3+j*1.9==82.3)

printf("%d\n",i);

}

return 0;

}

浮點數相比較