我試圖尋找這個問題的答案,但無濟於事。 我想要做的是計算cos(x)在0和用戶提供的數字之間的弧度(0)。我是新來的C++,所以如果這是微不足道的,請溫和。爲什麼cos(M_PI_2)== float(0)評估爲false? C++
這是從我的代碼摘錄,(也注意到我並不完全確定#import
和#include
之間的差異,但我離題了)。
#define _USE_MATH_DEFINES
#import <iostream>
#import <algorithm>
#include <math.h>
#include <stdio.h>
int count = 0;
if (r > 0) {
for (float i = 0; i < r; i += M_PI_2) {
printf("\n\n%s: %f: %f\n\n", cos(i) == -float(0) ? "true":"false", \
cos(i), -float(0));
if (cos(i) == float(0) || cos(i) == -0) {
count++;
printf("Count: %d", count);
}
}
使用值2R作爲r,我應該讓計數增加一次,但if語句的計算結果爲false。我不確定我應該將浮點數轉換爲零,也不會檢查-0。無論如何,這是這段代碼中打印語句的輸出。
它看起來像cos(M_PI_2)
實際上等於-float(0)
所以爲什麼不會cos(M_PI_2) == -float(0)
評估爲false
?再次,我剛剛開始接受C++的日子,所以如果這是微不足道的道歉。
我認爲這是因爲四捨五入錯誤。嘗試'if(abs(cos(i))<0.00001)' – martijnn2008
'#import'不是標準的C++。 –
請參閱[浮點數學是否被破壞?](http://stackoverflow.com/questions/588004/is-floating-point-math-broken) –