2014-11-12 2 views
0

Я бегу в некоторых проблем с функцией R as.character() и paste(): они не вернуть то, что они кормили ...Являются ли as.character() и paste() ограниченными размерными числами, которые они заданы?

as.character(1415584236544311111) 
## [1] "1415584236544311040" 

paste(1415584236544311111) 
## [1] "1415584236544311040" 

, что может быть проблема или обходной путь, чтобы вставить мой номер как строка?

обновление

Я обнаружил, что с помощью bit64 библиотеки позволило мне сохранить дополнительные цифры мне нужно с функцией as.integer64().

+1

Почему не просто '' 1415584236544311111 "'? –

+2

Это не 'as.character' или' paste'. Это число слишком велико, чтобы ваш компьютер точно представлял собой целое число. – joran

+0

тогда, как я могу заставить R сохранить его в виде двойника или поплавка? –

ответ

1

Помните, что цифры хранятся в фиксированном количестве байт на основе используемого вами оборудования. Можете ли вы показать, что ваше очень большое целое правильно обрабатывается обычными арифметическими операциями? В противном случае вы, вероятно, пытаетесь сохранить число до большого, чтобы сохранить в своем # числе байтов R-установки. Номер, который вы видите, просто подходит.

Вы можете попробовать сохранить номер как двойной, который технически менее точен, но может хранить большие числа в научной нотации.

EDIT

Рассмотрим ответы в long/bigint/decimal equivalent datatype in R, перечень решений, в том числе произвольной точности пакетов.

+0

Плохой ответ. Я бы посоветовал вместо этого использовать один из пакетов произвольной точности. –

+0

Согласен, мне следовало бы сделать больше исследований. Я не работаю с произвольными типами точности в обычном режиме. Я связал соответствующий поток, в котором перечислены три варианта. – mobiusklein

Смежные вопросы