2

我在一个excel文件中有一个数字等于-29998,1500000003

excel文件

当我尝试在 RI 中打开它时

> library(openxlsx)
> posotest <- as.character(read.xlsx("sofile.xlsx"))
> posotest
[1] "-29998.1500000004"    

有什么帮助吗?期望的结果:-29998,1500000003


编辑:options(digits=13)我得到这-29998.150000000373可以解释为什么舍入完成,但是即使options(digits=13)我得到

> as.character(posotest)
[1] "-29998.1500000004"

你有什么功能可以让我得到完整的字符数吗?


EDIT2 format做到了这一点,但它在最后增加了人为噪音。

x <- -29998.150000000373
format(x,digits=22)
[1] "-29998.15000000037252903"

我怎么知道要使用多少位数,format因为nchar会给我一个错误的值?

文件在这里

4

1 回答 1

3

您可以通过以下方式获得精度高达 22 位的字符串format()

x <- -29998.150000000373
format(x,digits=22)
[1] "-29998.15000000037252903"

当然,这将向您展示与尝试以有限精度的二进制表示形式表示十进制数有关的各种丑陋...

于 2018-11-20T19:27:40.247 回答