1L와 1L의 차이점은 무엇입니까?
나는 종종 그 상징을 보았습니다.1L(또는)2L,3L등)이 R 코드에 나타납니다.사이의 차이점은 무엇입니까?1L그리고.1?1==1L로 평가함.TRUE이유는1LR 코드에 사용됩니까?
그래서 @James와 @Brian은 3L이 무엇을 의미하는지 설명했습니다.그런데 왜 그걸 쓰십니까?
대부분의 경우 아무런 차이가 없지만 때로는 코드를 더 빨리 실행하고 메모리를 더 적게 사용하기 위해 사용할 수 있습니다.이중("숫자") 벡터는 요소당 8바이트를 사용합니다.정수 벡터는 요소당 4바이트만 사용합니다.벡터가 크면 메모리 낭비가 적고 CPU 사용도 줄어듭니다(일반적으로 더 빠름).
이는 대부분 인덱스 작업 시 적용됩니다.정수 벡터에 1을 더하면 이중 벡터가 되는 예는 다음과 같습니다.
x <- 1:100
typeof(x) # integer
y <- x+1
typeof(y) # double, twice the memory size
object.size(y) # 840 bytes (on win64)
z <- x+1L
typeof(z) # still integer
object.size(z) # 440 bytes (on win64)
...하지만 정수로 과도하게 작업하는 것은 위험할 수 있습니다.
1e9L * 2L # Works fine; fast lean and mean!
1e9L * 4L # Ooops, overflow!
...그리고 @Gavin이 지적했듯이 정수의 범위는 대략 -2e9에서 2e9입니다.
그러나 주의할 점은 이것이 현재 R 버전(2.13)에 적용된다는 것입니다.R은 어느 시점에서 이를 변경할 수 있습니다(64비트 정수는 길이 > 2e9의 벡터를 활성화할 수 있는 달콤함).안전하려면 다음을 사용해야 합니다..Machine$integer.max최대 정수 값이 필요할 때마다 선택합니다(최소 정수 값은 음수).
'L' 접미사를 사용하여 명시적 정수로 만들 목적으로 임의의 숫자를 한정할 수 있습니다.따라서 '0x10L'은 16진수 표현에서 정수 값 16을 생성합니다.상수 1e3L은 1000을 숫자 값이 아닌 정수로 제공하며 1000L와 같습니다. ('L'은 3이 아닌 용어 1e3을 수식하는 것으로 처리됩니다.)정수 값이 아닌 'L'(예: 1e-3L)로 한정하면 경고가 표시되고 숫자 값이 생성됩니다.숫자에 불필요한 소수점(예: 1.L)이 있는 경우에도 경고가 생성됩니다.
L은 표준 숫자 클래스의 배수가 아닌 정수 유형을 지정합니다.
> str(1)
num 1
> str(1L)
int 1
상수에 대한 정수 값을 명시적으로 만들려면 함수를 .integer로 부르거나 단순히 "L" 접미사를 사용하면 됩니다.
언급URL : https://stackoverflow.com/questions/7014387/whats-the-difference-between-1l-and-1
'programing' 카테고리의 다른 글
| SQL 서버에서 외부 키 제약 조건을 제거하는 방법은 무엇입니까? (0) | 2023.06.22 |
|---|---|
| Microsoft SQL Server에서 데이터베이스 삭제 및 재생성 (0) | 2023.06.22 |
| MongoSocketReadException: 스트림 끝에 너무 일찍 도달했습니다(일정 기간 동안 사용하지 않은 후). (0) | 2023.06.22 |
| FK 제약 조건(Oracle) 추가 시 권한 부족 (0) | 2023.06.22 |
| 파이썬은 바이너리 파일에 어떻게 쓰나요? (0) | 2023.06.22 |