2

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

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

现在我正在使用黑客:

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

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

更新

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

4

4 回答 4

5

简短的回答:这不能用 printf 格式说明符来完成。

由于 D 使用与 C99 相同的格式vsprintf(),您可以在此线程中找到答案:避免 printf() 中的尾随零

于 2008-12-01T09:13:05.710 回答
2

尝试类似的东西

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

Federico 的回答应该有效,有关更多信息,请查看格式说明符部分。

于 2008-12-01T07:04:08.950 回答
-1

我看到您目前正在使用 Phobos,但是 Tango 支持您尝试做的事情。

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

将打印“1.20”

于 2008-12-01T11:37:30.550 回答