R обрабатывает числа по-разному.В R как целые числа, так и значения с плавающей запятой двойной точности по умолчанию равны 32-битной версии.
Как указал Андрей, в R. есть два разных типа чисел.
- Литералы
1L, 2L, 3L, ....
, что эквивалентно as.integer(1)
- обычномучисла (1, 2, 3.4, любое число на самом деле)
, а также их сложные аналоги.
Литералы являются целыми числами как таковые
typeof(1) #double
class(1) #numeric
typeof(1L) #integer
class(1L) #integer
хорошоопределены.Однако при вычислении, если какая-либо часть вычисления не сохраняется как тип с меньшим или равным значением, чем целое число, она автоматически преобразуется в двойное:
typeof(1L + 1L) #integer
typeof(1L + 1) #double
typeof(1L + TRUE) #integer
typeof(1L * 3) #double
typeof(1L * 3L) #integer
Следует отметить, однако, что R выполняется с 32битовые переменные имеют ограниченный диапазон по сравнению с python 3.x.Однако можно обойти 32-битные переменные (в большинстве случаев!), Используя пакеты bit64
для 64-битных целых и Rmpfr
, что дает интерфейс для произвольной точности с плавающей запятой (согласно их документации).