在R语言中,数字的输出默认为7位:
> a = 0.1234567890 #10位
> a
[1] 0.1234568
注:输出结果四舍五入。
1 options(digits)函数
通过options(digits)
函数设置输出长度,当digits = 3
时:
> options(digits = 3)
> a = 0.1234567890 #10位
> a
[1] 0.123
当digits = 10
时:
> options(digits = 10)
> a = 0.1234567890 #10位
> a
[1] 0.123456789
digits
最大取22,超过22会报错:
> options(digits = 3)
> options(digits = 22)
> options(digits = 23)
Error in options(digits = 23) :
invalid 'digits' parameter, allowed 0...22
输出的结果只保留了9位,末尾的0被省略。
2 round(x, n)函数
round(x, n)
函数中,x
为数字,n
为小数点后保留的位数,设置n = 4
时:
> a = 0.1234567890 #10位
> round(a, 4)
[1] 0.1235
> a = 1.234567890 #小数点后9位
> round(a, 4)
[1] 1.2346
注:输出结果四舍五入。
当设置n = 10
时:
> a = 0.1234567890 #10位
> round(a, 10)
[1] 0.123456789
输出的结果只保留了9位,末尾的0被省略。
当小数点后的0的位数超过n时,输出的结果为0:
> a = 0.0001234567890 #13位
> round(a, 3)
[1] 0
> a = 0.0001234567890 #13位
> round(a, 4)
[1] 1e-04
3 signif(y, n)函数
signif(x, n)
函数中,x
为数字,n
为有效数字的个数 ,当n = 4
时:
> a = 1.234567890 #小数点后9位
> signif(a, 4)
[1] 1.235
> a = 0.000001234567890 #小数点后15位
> signif(a, 4)
[1] 1.235e-06
当n = 10
时:
> a = 1.234567890 #小数点后9位
> signif(a, 10)
[1] 1.23456789
此时数字末尾的0依旧被省略。
4 sprintf(fmt, …)函数
> a = 0.1234567890 #小数点后10位
> sprintf("%0.4f", a)
[1] "0.1235"
> a = 0.1234567890 #小数点后10位
> sprintf("%0.10f", a)
[1] "0.1234567890"
通过sprintf(fmt, ...)
函数可以保留末尾的0。
当输入为整数时,位数不够会在输入值前面补0:
> a = 12456789
> sprintf("%03d", a)
[1] "12456789"
> a = 12
> sprintf("%03d", a)
[1] "012"
欢迎大家批评指正。