2013-04-19 2 views
0

AS3에서 파스칼의 삼각형을 만들고 있습니다.AS3 : 2 개의 양의 정수를 추가하면 음의 정수가됩니다.

결과에서 알 수 있듯이 1037158320과 1166803110을 추가하면 음수 인 -2091005866이 생성됩니다.

이상한 표현입니다. 나는 처음에는 그 크기가 너무 커서 int이 잡을 수 있다고 생각하지 않았지만 합계의 크기는 두 가닥보다 훨씬 큽니다.

숫자가 파스칼의 삼각형의 선의 중심에 가까워지면 증가 할 것이지만 -2091005866 옆의 숫자는 -1961361076이고 이는 센텀에 더 가깝지만 크기는 감소합니다!

가능한 해결책은 있습니까? ActionScript 3.0 Reference을 인용

답변

4

:

int 클래스를 사용하면 32 비트 정수를 나타내는 데이터 유형을 사용할 수 있습니다. int 클래스가 나타내는 값의 범위는 -2,147,483,648 (-2^31) ~ 2,147,483,647 (2^31-1)입니다. 2147483647

uintNumber 또는 사용을 고려보다 큰

1,037,158,320 + = 1166803110 2203961430.

+0

+1에 해당합니다. AS3에서 'Number'는 64 비트 정수 정밀도와 배정 밀도 부동 소수점 값을 포함 할 수 있습니다. – Vesper

+0

uint는 2^32-1 (42 억)의 최대 값을 가지므로 그 큰 숫자를 사용할 때는 uint를 사용하지 않아야합니다. 이에 비해 Number는 1.79e + 308 –

+0

@Vesper의 최대 값을가집니다. "AS3 Number는 64 비트 정수 정밀도를 포함 할 수 있습니다."는 완전하지 않습니다. Number는 IEEE754 배정도 64 비트이므로 52 비트 만 유지합니다. mantisa 때문에 정밀도를 잃지 않는 최대 정수는 0xFFFFFFFFFFFFF = 4503599627370495 – fsbmain

관련 문제