【发布时间】:2013-03-16 19:08:44
【问题描述】:
有几个与此相关的问题,但我还没有看到一个正确回答这个问题的问题。我想打印一个浮点数,但我希望小数位数是自适应的。举个例子:
0 -> 0
1234 -> 1234
0.1234 -> 0.1234
0.3 -> 0.3
令人讨厌的是,%f 说明符只会打印到固定精度,因此它会在所有未达到该精度的数字上添加尾随零。有些人建议使用 %g 说明符,它适用于一组数字,但它会切换到一些数字的科学记数法,如下所示:
printf("%g", 1000000.0); // prints 1e+06
如何打印没有不必要的零的浮点数,同时仍然保持 printf 对实际具有小数分量的数字的标准精度?
【问题讨论】:
-
@AlexeyFrunze 我不认为这是重复的,因为它比我想要的要复杂得多。我可以四舍五入到几位数,我只是不想要任何尾随零。
-
但这就是你所要求的,引用:
How can I print floating-point numbers without the unnecessary zeros, but also without rounding or truncating the value? -
@AlexeyFrunze 啊,我做到了,我的错。这更多是指类似问题的“答案”,建议使用
%.2f或类似问题。我已经对其进行了编辑以删除该语言。 -
但是现在语言很模糊。定义
fairly good accuracy for numbers that need it。 -
@AlexeyFrunze 我的意思是 printf 对实际具有小数部分的数字的标准精度(我相信 6 个小数位)。同样,我不希望它超级准确,我对 printf 的准确性很好,我只是讨厌所有尾随零。
标签: c