作为.number(作为.character(x)),其中x最初是一个数字,是否可以更改x



我想知道将数字转换为字符,然后再转换回R是否可以更改数字?例如,as.character是否在小数点后对数字进行四舍五入(如果是,则为多少(?

@jogo感谢您的建议:(

以下是评论作为答案:

来自?as.character():

as.character表示实数和复数,有效值为15数字(从技术上讲,是编译器对ISO C常量的设置DBL_DIG,在支持IEC60559算术的机器上为15根据C99标准(。这样可以确保结果将是可靠的(而不是表示的结果错误(,但这确实意味着转换为字符并返回到数字可以更改数字。如果要将数字转换为字符以最大可能的精度,使用格式。

所以是的,如果你有超过15个有效数字,它确实会改变数字。参见:

> as.character(1.000000000000001) # more than 15 significant digits
[1] "1"
> as.character(1.00000000000001) # less than 15 significant digits
[1] "1.00000000000001"

以下是其他一些例子:

y <- as.numeric(as.character(pi))
identical(y, pi) ### gives FALSE

x <- 1/7
y <- as.numeric(as.character(x))
x-y

as.numeric(as.character(.Machine$double.xmax)) ## result: Inf

相关内容

最新更新