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

时间:2017-02-08 05:23:55

标签: r

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有一种奇怪的行为。

4 个答案:

答案 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