変数の受け渡し double
関数の中にある変数の型を変えたら不具合が出たのでそのことに
ついて質問します。
ある変数値が負である関数のdouble型変数に受け渡した後に値が変わりました。
本でdoubleの範囲を調べると1.7 * 10^(-308) ~ 1.7 * 10^(+308)
と書いてありました。doubleに負の数値を代入してはまずいのでしょうか?
具体的なプログラムを下に載せます。
int mod(double x,int p)
{
int ans;
printf("x=%f prime=%d ",x,p);
if(x >= 0){
if(x >= p) {
ans=fmod(x,p);
printf("fmod=%d\n",ans);
}else{
ans=x;
printf("mod=%d\n",ans);
}
}else{
do{
x+=p;
}while(x < 0);
ans=x;
printf("mod=%d\n",ans);
}
return ans;
}
int rmd(struct zahyo *P,struct zahyo *Q,int prime)
{
unsigned int m,n;
m=mod(Q->x - P->x,prime);
n=mod(Q->y - P->y,prime);
exeuclid(m,prime,1,0,0,1);
printf("m=%d n=%d aa=%d aa*n=%d\n",m,n,aa,aa*n);
return mod(aa*n,prime);
}
実行結果の一部
m=10 n=6 aa=-1 aa*n=-6
x=4294967290.00000 prime=11 fmod=9
関数modのdouble型変数に負の数を受け渡すのはここ以外にもありますが
このときだけ他の数値になりました。
考えられる原因は何かあるでしょうか?よろしくお願いします。
補足
>それ 何? >調べて 何を?