如何对数字进行舍入并使其显示为零?

M. *_* Er 16 r

R中用于将数字四舍五入为2小数点的公共代码是:

> a = 14.1234 
> round(a, digits=2)
> a
> 14.12
Run Code Online (Sandbox Code Playgroud)

但是,如果数字的前两个十进制数字为零,则R在显示中禁止为零:

> a = 14.0034
> round(a, digits=2)
> a
> 14
Run Code Online (Sandbox Code Playgroud)

即使它们是零,我们怎样才能使R显示第一个十进制数字?我特别需要这个情节.我在这里搜索了一些人建议使用options(digits=2),但这使得R有一种奇怪的行为.

akr*_*run 28

我们可以用 format

format(round(a), nsmall = 2)
#[1] "14.00"
Run Code Online (Sandbox Code Playgroud)

正如评论中提到的@ arvi1000,我们可能需要指定digitsinround

format(round(a, digits=2), nsmall = 2) 
Run Code Online (Sandbox Code Playgroud)

数据

a <- 14.0034
Run Code Online (Sandbox Code Playgroud)

  • 实际上,我认为这应该是`format(round(a,digits = 2),nsmall = 2)`,因为OP想要保留小数点后的任意零,正确舍入到2个位置,而不是舍入到0位然后垫有两个尾随零.比较:`format(round(14.0123),nsmall = 2)`(错误)和`format(round(14.0123,digits = 2),nsmall = 2)` (3认同)

San*_*Dey 8

试试这个:

a = 14.0034 
sprintf('%.2f',a) # 2 digits after decimal
# [1] "14.00"
Run Code Online (Sandbox Code Playgroud)

  • 只是'sprintf('%.2f',a)`我也会做四舍五入.例如,'sprintf('%.2f',14.009)`给出了"14.01". (4认同)