2017-09-30 4 views
0

このコードを使用して、変数 "num"にCで大きな数値をユーザー入力として格納しようとしています。数値の精度をCで保持する方法

scanf("%e",&num); //input: 340282346638528859811704183484516925440 
    printf("%1.20e\n", num); // output: 3.40282346638528860000e+038 

それは「8.86億」後精度を失うが、それは私がCで、それは二重形式で番号を格納することが考え0

まで丸め。どのようにこの精度をより大きな数値に保つのですか?

+0

倍精度は最大17桁で、すべて '出力'で使用されます。 'long double'を使用して少し伸ばすことができます(実際には16ビット)が、大きな数値をサポートするには特別なライブラリが必要です。組み込みのスカラー型はサポートしていません。 – GolezTrol

答えて

1

ほとんどの実装では、doubleの精度は53ビットです。それは約17桁の数字です。これはあなたが持っているようです。

利用可能であればlong doubleを使用できます。インテルのプラットフォームでは、11ビットの精度が得られます。

それを超えると、多重精度ライブラリを見つける必要があります。

関連する問題