はじめまして。
kosyといいます。
以下のコードを実行すると、
四捨五入がうまく行われません。
	double dVal1[] = {145.5, 160.8, 160.2, 156.5, 154.8,
			169.75, 181.3, 172.8, 181, 173.2};
	double dVal2[] = {160.8, 160.2, 156.5, 154.8, 169.75,
			181.3, 172.8, 181, 173.2,167.5};
	double orgVal[] = {165.58500, 167.78500};
	double val[] = {0, 0};
	for(int i=0; i<10; i++ ) {
		val[0]+=dVal1[i];
		val[1]+=dVal2[i];
	}
	for( int i=0; i<2; i++ ) {
		printf(------------------------\n);
val[i]=val[i]/10;
		printf(A1  %lf\n, val[i]);	
		printf(A2  %.*lf\n, 2,val[i]);
		printf(O   %.*lf\n, 2,orgVal[i]);
	}
1回目の計算結果
	A1:165.585000
	A2:165.58
	O :165.59
2回目の計算結果
	A1:167.785000
	A2:167.79
	O :167.79
1回目のA2は四捨五入されないのでしょうか?
理屈が分からないため、どこら調べてよいか
わからないので、投稿させて頂きました。
よろしくお願いします。
投稿者です。
開発環境書き忘れましたので、追記します。
IDE:VS2002でC++です。
Win32のコンソールアプリケーションで現象が発生します。
よろしくお願いします。
> printf(A1 %lf\n, val[i]);
この表示の時にも四捨五入されているのです。
もっと高い精度で表示してみてください。
printf(A1 %.20lf\n, val[i]);
早速の回答有難うございます。
精度を上げて表示したところ、
原因がわかりました。
有難うございました。
