1

助けが必要です。精度を失うことなく、char * を double または long doubleに変換して STORE する必要があります。

確かに、私はstrtoldおよびatofメソッド (またstrtold ) を使用しようとしましたが、これらのメソッドは値を丸めています。

例えば:

char * key  ="39.7519707";

double ld =strtod((char*)key,NULL);

printf("%lf", ld);

版画 : 39.751971

正しい値がprintf("%6.7f",ld)得られますが、変数に格納できませんでした。

4

1 に答える 1

1

まず第一に、 を出力するには%f書式指定子だけが必要ですdouble

次に、を使用して精度を失うことはありません。strtod()出力表現printf()は、%fフォーマット指定子の使用方法に問題があります。

、章§7.21.6.1に従ってC11fprintf()

[...] 精度が欠落している場合は、6 と見なされます;[...]

次に、あなたがしたとき

printf("%6.7f",ld);

精度が 7 になり、期待どおりの値が出力されます。

于 2016-02-19T16:58:22.593 に答える