2

D プログラミング言語を最後に使用してからかなりの時間が経ちましたが、現在は科学計算を含むプロジェクトに使用しています。

たくさんの浮動小数点データがありますが、 を使用してそれらを印刷すると、次のwriteflnような結果が得られます。4.62593E-172これはゼロです! 文字列書式 % を使用して 0 などを出力するにはどうすればよいですか?

現在、私はハックを使用しています:

    if( abs(a) < 0.0000001 )
        writefln(0);
    else
        writefln(a);

それは仕事をしますが、可能であればフォーマット操作を使用してやりたいです。

アップデート

誰かが提案しましたが、それに関する問題は、不writefln("%.3f", a)必要な余分なゼロを出力 することです。00.0001.21.200

4

4 に答える 4

5

簡単な答え: これは、printf 形式指定子では実行できません。

D は C99 の と同じフォーマットを使用するためvsprintf()、このスレッドで答えを見つけることができます: printf() で末尾のゼロを避ける

于 2008-12-01T09:13:05.710 に答える
2

Try something like

writefln("%.3f", a);
于 2008-12-01T06:56:43.940 に答える
1

Federico's answer should work, for more information check the format specifiers section.

于 2008-12-01T07:04:08.950 に答える
-1

現在フォボスを使用しているようですが、あなたがやろうとしていることはタンゴでサポートされています。

Stdout.formatln("{:f2}", 1.2);

「1.20」を出力します

于 2008-12-01T11:37:30.550 に答える