Я хотел бы преобразовать приведенные ниже символьные данные в числовые данные. Но as.numeric обрезает некоторую информацию. Как я могу гарантировать, что я получу 1.00000000000000000000000000000001 после преобразования в числовой?Преобразование символа в числовое без потери информации
> a="1.00000000000000000000000000000001"
> as.numeric(a)
[1] 1
> as.numeric(a,10)
[1] 1
> as.numeric(as.character(a))
[1] 1
> as.double(a)
[1] 1
Это один из наиболее часто задаваемых вопросов о SO. Прежде всего, вам нужно узнать разницу между сохраненным значением и отображаемой точностью (которое в 'R' можно настроить с помощью таких вещей, как' options'). Во-вторых, вам нужно узнать о точности машины и о том, как числа с плавающей запятой хранятся в двоичных цифровых компьютерах. Например, 'a =" 1.00000000000001 " sprintf ('% 1.20f', as.numeric (a)) [1]" 1.00000000000000999201 "" В-третьих, проверьте предел точности значений с плавающей запятой. –