質問: (int)(d * 20); この結果でaの値に1を期待しているのですが。0.9999になって結果が0になってしまいます。 他関数などを使用して良いプログラミング例はありますか? それか、コンパイラの設定で桁数を指定して丸め込んだり出来れば解決しそうなのですが。
回答: double は、浮動小数点型ですので、仕様上そうなります。 a を 1 として取り出したいのであれば、一旦、d*20 を 有効数字 小数点以下2桁の文字列にして、それを int で 読み込むのは、どうでしょうか。 int a; double b,d; char bb[20]; d = 1.15 - 1.1; b = d*20.0; sprintf(bb,"%.2lf",b); sscanf(bb,"%d",&a);