它已经,因为我最后一次使用 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结果 我可以把它也删除尾随零?

有帮助吗?

解决方案

短的答案:这不能与printf的格式说明来完成

由于d采用相同的格式为C99的vsprintf(),你会发现在这个线程的答案:避免尾随零的printf()

其他提示

尝试类似

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

费德里科的答案应该工作,以获取更多信息查看格式说明符部分。

我看到你目前正在使用火卫一,但你正在试图做的是支持探戈。

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

将打印 “1.20”

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top