我想编写一个函数,用于计算每个正数的固定位数和小数位数。对于整数:例如,对于数字459,我希望看到
fixed=3 and decimal=0
作为函数的输出。对于十进制数字:例如,对于数字12.657,我想查看
fixed=2 and decimal=3
(因为12有两个数字,而657有三个数字)。对于小于1的数字,我希望看到
0
作为固定值,例如我希望看到的数字0.4056
fixed=0 and decimal=4
或我希望看到的数字0.13
fixed=0 and decimal=2
我的一般想法如下:
digits<-function(x){
length(strsplit(as.character(x),split="")[[1]])
}
我想将我的代码扩展为一个新的代码,以便如上所述工作。
我认为无法做到这一点。我们不能假设一个简单的数值可以在计算机中准确地表示出来。大多数浮点值当然不能。
在R控制台输入0.3:
> 0.3
[1] 0.3
看起来不错,不是吗?但是现在,让我们这样做:
> print(0.3, digits=22)
[1] 0.29999999999999999
本质上,如果将浮点数转换为字符串you定义所需精度。计算机无法给您这种精度,因为它以位存储所有数字,因此永远不会给您绝对精度。