自从我上次使用D Programming Language以来已经有一段时间了,现在我将它用于一些涉及科学计算的项目。
我有一堆浮点数据,但是当我使用writefln
打印它们时,我得到的结果如下:4.62593E-172
这是零!如何使用字符串格式化%stuff来打印0?
现在我正在使用黑客攻击:
if( abs(a) < 0.0000001 )
writefln(0);
else
writefln(a);
它完成了这项工作,但如果可能的话,我希望使用格式化操作。
更新
有人建议writefln("%.3f", a)
,但问题是它会打印不必要的额外零,即0
变为0.000
而1.2
变为1.200
>
我可以让它删除尾随的零吗?
答案 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”