2013-10-29 88 views
-3

我有這個問題:C幫助!浮點數

我們聲稱,使用浮點數進行相等性測試是不安全的,因爲算術運算引入舍入誤差,這意味着兩個數不應該相等。

對於這個程序,你應該選擇一個數字N,並編寫一個程序來顯示1到1000之間的整數x是否等於 (x + 1)/ N =(x/N)+(1/N)失敗

#include <stdio.h> 

int main() { 
int x; 
float N = 50; 

for (x=0; x<1001; x++) { 
    if ((x+1)/N != (x/N) + (1/N)) 
    { 
    printf("%i\n",x); 
    } 
} 
} 

這是正確的嗎?

謝謝。

+10

你好,歡迎來到stackoverflow.com。請花些時間閱讀[幫助頁面](http://stackoverflow.com/help),尤其是名爲[「我可以問些什麼話題?」](http://stackoverflow.com/help/討論話題)和[「我應該避免問什麼類型的問題?」](http://stackoverflow.com/help/dont-ask)。更重要的是,請閱讀[Stack Overflow問題清單](http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist)。您可能還想了解[SSCCE](http://sscce.org/)是什麼。 –

+0

當然,如果你的教授希望你用C語言寫這篇文章,那麼你至少對如何編寫C程序有一個最基本的理解。如果你不這樣做,你的助教應該能夠幫助你。 – mah

+0

來吧,不要諷刺,它是他在網站上的第一個問題...... @LivingHealhty,我們不應該在這裏問作業問題,並等待包括源代碼在內的答案。向我們展示你到目前爲止所嘗試的,我們會給你一些提示...... –

回答

0

你的程序是錯誤的。它應該從x=1開始,而不是x=0。但除此之外,你應該選擇兩個例子(一個已經被程序打印,一個沒有打印),然後手動計算它們。只需用筆和紙以及IEEE 754-1985規則。然後打印方程的兩邊,並將它們與手算結果進行比較。