浮點數相比較
阿新 • • 發佈:2019-03-19
錯誤 可以轉化 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;
}
浮點數相比較