0

是否可以在不丢失精度的情况下编写以下向量?write.table 文档说它具有“digits = 15”的内部等效项,看起来 scipen 被忽略了。

a <- c(0.1111111111111123333, 0.11111111111111244, 0.1111111111111121111111)
options(scipen=22)
write.table(a, file="del.txt")
4

1 回答 1

1

您可以在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')

不好。

我会继续寻找答案,但希望其他人会介入并清理它。

于 2016-04-19T02:20:56.493 回答