保留小数点后的零

81

我想保留尾随的零,例如,如果我输入:

round(5.2, 3)
我希望输出结果为:
5.200
2个回答

109
如果这是为了打印目的,sprintf 就是你需要的:
> sprintf("%.3f", round(5.2,3))
[1] "5.200"

请查看?sprintf了解格式化的细节。


3
@Chase: 是否有可能输出数字值而不是字符? - Marco
5
@Marco:我认为数字值没有末尾的零。 - daroczig
@Marco 5.2 == 5.200 它们是相同的数字,唯一的区别在于数字表示为字符串的方式。 - tim_yates
@tim_yates:是的,当然是一样的。我想知道的原因是,正如我们所怀疑的那样,这是为了打印目的。 - Marco
如果不是为了打印目的,那么在 sprintf(...) 之外还可以使用什么? - rnorouzian
@rnorouzian 然后我们使用原样:5.2 - zx8754

69

当你将它打印出来时,你应该能够做到:

formatC( round( 5.2, 3 ), format='f', digits=3 )

1
谢谢。很抱歉,我不能接受多个答案。我选择接受之前的答案,因为Chase的声誉分较低。不过,你的解决方案也非常好。 再次感谢! - Marco
有没有同时适用于打印和非打印目的的东西呢? - rnorouzian
1
我不明白你的意思。 - tim_yates
3
有没有什么可以通过'options()'更改以保留尾随零的内容?我知道5.2 == 5.200,但在我的情况下,为了视觉一致性,保留尾随零会很好。由于我正在使用带有'parse=T'的annotate,因此像'formatC'提供的字符串不足够。 - dudu
以前,我是这样四舍五入的,但后来停止了,因为我觉得使用round()函数有一个不必要的步骤。你还记得我们为什么/曾经这样做吗: formatC(round( 5.455, 2), format='f', digits=2 ) 而不是这样: formatC(5.455, format='f', digits=2 ) 看起来好像两者都是按照IEEE标准(下一个偶数)进行四舍五入。 - Poza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接