R中用于将数字四舍五入为2小数点的公共代码是:
> a = 14.1234
> round(a, digits=2)
> a
> 14.12
但是如果数字的前两个十进制数字为零,则R在显示中禁止零:
> a = 14.0034
> round(a, digits=2)
> a
> 14
即使它们是零,我们怎样才能让R显示第一个十进制数字?我特别需要这个情节。我在这里搜索过,有些人建议使用options(digits=2)
,但这会让R有一种奇怪的行为。
答案 0 :(得分:22)
我们可以使用format
format(round(a), nsmall = 2)
#[1] "14.00"
在评论中提及@ arvi1000时,我们可能需要在digits
round
format(round(a, digits=2), nsmall = 2)
a <- 14.0034
答案 1 :(得分:7)
试试这个:
a = 14.0034
sprintf('%.2f',a) # 2 digits after decimal
# [1] "14.00"
答案 2 :(得分:2)
怎么样:
a=14.0034
formatC(a,2,format="f")
#[1] "14.00"
答案 3 :(得分:1)
你可以使用这个函数代替round,就像你使用round函数一样使用它。
import decimal
def printf(x, n):
d = decimal.Decimal(str(x))
d0 = -(d.as_tuple().exponent)
if d0 < n:
print("x = ", x)
else:
d1 = decimal.Decimal(str(round(x, n)))
d2 = d1.as_tuple().exponent
MAX = n + d2
if MAX == 0:
print("x = ", round(x, n))
else:
i = 0
print("x = ", round(x, n), end = '')
while i != MAX:
if i == (MAX - 1):
print("0")
else:
print("0", end = '')
i = i + 1
所以你一定有这样的东西。
>>> printf(0.500000000000001, 13)
>>> 0.5000000000000