R чтение Excel файл проблема точности чисел - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть номер в файле Excel, равный -29998,1500000003

excelfile

Когда я пытаюсь открыть его в 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 даст мне неправильное значение?

Файл здесь

1 Ответ

0 голосов
/ 20 ноября 2018

Вы можете получить строку с точностью до 22 цифр через format():

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

Конечно, это покажет вам все виды уродства, связанные с попыткой представить десятичное число вдвоичное представление с конечной точностью ...

...