在D中打印浮点数

时间:2008-12-01 06:38:37

标签: printf d

自从我上次使用D Programming Language以来已经有一段时间了,现在我将它用于一些涉及科学计算的项目。

我有一堆浮点数据,但是当我使用writefln打印它们时,我得到的结果如下:4.62593E-172这是零!如何使用字符串格式化%stuff来打印0?

等内容

现在我正在使用黑客攻击:

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

它完成了这项工作,但如果可能的话,我希望使用格式化操作。

更新

有人建议writefln("%.3f", a),但问题是它会打印不必要的额外零,即0变为0.0001.2变为1.200 我可以让它删除尾随的零吗?

4 个答案:

答案 0 :(得分:5)

简答:使用printf格式说明符无法做到这一点。

由于D使用与C99 vsprintf()相同的格式,因此您可以在此主题中找到答案:Avoid trailing zeroes in printf()

答案 1 :(得分:2)

尝试类似

的内容
writefln("%.3f", a);

答案 2 :(得分:1)

Federico的答案应该有效,有关更多信息,请查看format specifiers部分。

答案 3 :(得分:-1)

我发现你现在正在使用Phobos,但是Tango支持你要做的事情。

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

将打印“1.20”