我想知道将数字转换为字符,然后再转换回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