想請問浮點數做完加減乘除後要怎麼判定是否為0
爬文看網路上的說法是用EPSINON=0.000001
但是改了之後依舊跑不出預設的答案
問過其他人說可以用long double接值試試但也無法跑出正確的結果
有大神知道該怎麼修改嗎 求解 感謝~~
(把for裡面i, j ,k的型態改為int就正確了,for裡面用浮點數可能會有問題)
#include<stdio.h>
int main(){
double x, y, z;
printf("請輸入一長度不為0的向量: ");
scanf("%lf %lf %lf", &x, &y, &z);
while(x==0.0 && y==0.0 && z==0.0){
printf("\n請輸入一長度不為0的向量: ");
scanf("%lf %lf %lf", &x, &y, &z);
}
double i, j, k;
int count=0;
for(i=-5;i<=5;i++){
for(j=-5;j<=5;j++){
for(k=-5;k<=5;k++){
long double a=x*i, b=y*j, c=z*k, sum=a+b+c;
/*printf("%lf %lf %lf %lf", a, b, c, sum);
printf("%lf %lf %lf", i, j, k);*/
const float EPSINON=0.000001;
if((sum>= -EPSINON) && (sum<=EPSINON)){
//整數*小數可直接轉存為小數,但整數*小數不可直接轉存為整數需先轉型(int)
/*if(sum==0.000000)*/
if(i!=0 && j!=0 && z!=0){
count++;
}
}
}
}
}
printf("\n共找到: %d 個", count);
參考執行範例如下: