-1
私は達成するプログラムを持っていますが、まだ少し問題があります。 私は可変float精度でdoubleを出力する必要があります。 私が実際に行う方法をされている場合:小さな問題は、それが最後の番号の後に0を出力することであるPrintf可変精度とゼロの隠蔽
int main(void)
{
int digits = 4;
printf("%0.*f\n", digits, 0.123456789);
printf("%0.*f\n", digits, 5.9);
return 0;
}
、それを示すために、ここで私が得るものです:
0.1234
5.9000
そしてここにはあります私が欲しいもの:
0.1234
5.9
アイデアはありますか?あなたが代わりに%f
の%g
を使用する必要が
私はすでにこれを試みたが、それは非常にうまく機能しない、もし私は数字でテストする= 29 私はこの出力を得ました: 1.23456788999999900938180668 –
@ChrisProllsこれは、正確な数値が「0.123456788999999733325449137030518613755702972412109375」であるためです。これは '0.123456789'に最も近い' double '番号です。 – mch
@ ChrisProlls--また、 'double'は29桁の精度を持たないことに注意してください。 –