programing

1L와 1L의 차이점은 무엇입니까?

minimums 2023. 6. 22. 21:38
반응형

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최대 정수 값이 필요할 때마다 선택합니다(최소 정수 값은 음수).

R 언어 정의상수 섹션에서:

'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

반응형