r - as.numeric(as.character(x)) 可以改变 x 吗?
问题描述
我想知道将数字转换为字符然后再返回 R 是否可以更改数字?例如, as.character 是否会在一定数量的小数位后四舍五入数字(如果是,有多少)?
解决方案
@jogo 感谢您的建议 :)
这是作为答案的评论:
来自?as.character()
:
as.character 将实数和复数表示为 15 位有效数字(从技术上讲,编译器对 ISO C 常量 DBL_DIG 的设置,根据 C99 标准在支持 IEC60559 算法的机器上为 15)。这确保了结果中的所有数字都是可靠的(而不是表示错误的结果),但确实意味着转换为字符并返回数字可能会更改数字。如果您想以尽可能高的精度将数字转换为字符,请使用格式。
所以是的,如果您的有效数字超过 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
推荐阅读
- css - 在 Mobile Safari 中放大时图像模糊
- java - Java Selenium 2Captcha
- python - 如何以最少的轮数按升序收集数字?
- ssl - 如何在 ubuntu 的 nagios 核心中配置 ssl exeration 监控
- python - 检查为什么我的光标执行如此缓慢的方法
- jenkins - 来自 SCM 的 Jenkins 管道脚本不显示配置
- sharepoint - 可以在 Sharepoint 现代网站中上传字体吗?
- vue.js - 如何从帖子数组呈现“最新帖子”?(Vue.js)
- xml - 从结果节点中排除“xmlns:xl”
- asynchronous - 当我使用 first() 管道并且收到错误时,Observable 是否取消订阅?