是否可以在不丢失精度的情况下编写以下向量?write.table 文档说它具有“digits = 15”的内部等效项,看起来 scipen 被忽略了。
a <- c(0.1111111111111123333, 0.11111111111111244, 0.1111111111111121111111)
options(scipen=22)
write.table(a, file="del.txt")
是否可以在不丢失精度的情况下编写以下向量?write.table 文档说它具有“digits = 15”的内部等效项,看起来 scipen 被忽略了。
a <- c(0.1111111111111123333, 0.11111111111111244, 0.1111111111111121111111)
options(scipen=22)
write.table(a, file="del.txt")
您可以在format
将输出写入表之前使用该函数来控制输出。例如,以下代码会将您的矢量输出格式化为 20 位。
write.table(format(a, digits=20), file="del.txt")
编辑:我尝试了一些事情,似乎无法让 R 不更改数字。这是我尝试过的。
print(c(0.1111111111111123333, 0.11111111111111244,
0.1111111111111121111111), digits=18)
[1] 0.111111111111112340 0.111111111111112437 0.11111111111112118
不好。
a <- format(c(0.1111111111111123333, 0.11111111111111244,
0.1111111111111121111111), digits=19)
[1] “0.1111111111111123401” “0.1111111111111124372” “0.111111111111121180”
不好。
write.table(sprintf("%.100f", a), file='del.txt')
不好。
我会继续寻找答案,但希望其他人会介入并清理它。