質問

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

多数の浮動小数点データがありますが、 writefln を使用して印刷すると、 4.62593E-172 はゼロです!文字列フォーマット%を使用して0などを印刷するにはどうすればよいですか?

今、ハックを使用しています:

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

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

更新

誰かが writefln(&quot;%。3f&quot ;, a)を提案しましたが、問題は不必要な余分なゼロを印刷することです。つまり、 0 0.000になります。 および 1.2 1.200
になります 末尾のゼロも削除できますか?

役に立ちましたか?

解決

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

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

他のヒント

次のようなものを試してください

writefln("%.3f", a);

Federicoの答えは機能するはずです。詳細については、 formatを確認してください。指定子セクション。

現在、Phobosを使用していますが、あなたがやろうとしていることはTangoでサポートされています。

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

&quot; 1.20&quot;を印刷します

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top