- 853 名前:デフォルトの名無しさん [2018/10/21(日) 22:17:56.29 ID:+iExR7UM0.net]
- Cでfloat型が表す最小の正の数値を求めるプログラム書いてて、
とりあえず1.175494e-38に近づけるように書いてみてるんだが printfで値表示させながらやってみると1.175494e-38以下も表示されるのなんで? 環境はgcc5.5.0_1 とりあえず最小判定は初期値1.2e-38を0.000001e-38ずつ減らしていって、 1.175494e-38を抜けるとバカな数字が出てくると仮定してif(a / (b - c) != 1)で判定してる int main(){ float a = 1.2e-38, b; float c = 0.000001e-38; while(1){ b = a; a -= c; printf("a=%.6e b=%.6e\n", a, b); if(a < 0 || b < 0) break; if((a / (b - c) != 1.0)) break; } printf("a=%.8e b=%.8e\n", a, b); if(b < 1.175494e-38) printf("b is not min value\n"); }
|

|