개인 재정 ) - 더미 (Dummy)

) - 더미 (Dummy)

차례:

비디오: Dummy : no way out 더미 : 노 웨이 아웃 ㅣAniSEED 2024

비디오: Dummy : no way out 더미 : 노 웨이 아웃 ㅣAniSEED 2024
Anonim

믿거 나 말거나 컴퓨터는 가장 강력한 컴퓨터 일지라도 수학 계산을 수행 할 때 특정 제한이 있습니다. 이러한 제한은 대개 중요하지 않지만 때로는 몰래 들어 와서 물기도합니다. 자바에서 수학 할 때주의해야 할 것들이 있습니다.

정수 오버 플로우

정수형의 기본적인 문제는 고정 된 크기라는 것입니다. 결과적으로 short , int 또는 long 유형의 변수에 저장할 수있는 숫자의 크기에는 제한이 있습니다. 변수가 거대한 숫자를 보유 할 수 있지만 조만간 변수에 맞기에는 너무 큰 숫자를 발견하게됩니다.

좋습니다. (예를 들어 인위적으로 고안 한) 예를 생각해보십시오.

int a = 1000000000;

시스템. 아웃. println (a);

a + = 1000000000;

시스템. 아웃. println (a);

a + = 1000000000;

시스템. 아웃. println (a);

a + = 1000000000;

시스템. 아웃. println (a);

여기에 추가 할 때마다 값이 커질 것으로 예상됩니다. 그러나 출력 결과는 다음과 같습니다.

1000000000

2000000000

-1294967296

-294967296

첫 번째 추가가 작동하는 것으로 보이지만 이후에는 음수가됩니다! 값이 int 데이터 유형의 크기 제한에 도달했기 때문입니다. 불행히도 Java는이 오류가 발생했다는 사실을 알려주지 않습니다. 단순히 int 변수를 비트로 가득 채우고 비트가 맞지 않더라도 무시하고 희망을 알기를 희망합니다. int 가 음수 값을 저장하는 방식 때문에 큰 양수 값은 갑자기 큰 음수 값이됩니다.

int 가 아닌 long 를 사용해야한다는 것입니다. 왜냐하면 long int 보다 훨씬 큰 수를 저장할 수 있습니다. 프로그램에서 long 에 문제가 될만큼 큰 숫자를 처리하는 경우 부동 소수점 유형을 대신 사용해보십시오. 부동 소수점 유형은 long 보다 큰 값을 처리 할 수 ​​있으며 용량을 초과하면 알려줍니다. 부동 소수점 이상한 숫자

부동 소수점 숫자는 자체적으로 문제가 있습니다. 우선, 부동 소수점 수는 2 진수 시스템 (2 진수)을 사용하여 저장되지만 인간은 10 진수 시스템 (10 진수)으로 작업합니다. 불행하게도이 두 시스템 사이의 숫자를 정확하게 변환하는 것은 때때로 불가능합니다. 왜냐하면 어떤 수의 기준에서도 정확하게 어떤 분수를 표현할 수 없기 때문입니다.한 예: 자료 10은 분수 1/3을 정확하게 표현할 방법이 없다. 당신은 그것을 3333333으로 근사 할 수 있지만, 결국 당신이 저장할 수있는 자릿수의 한계에 도달하므로, 당신은 멈춰야 만합니다. 2 진수에서는 정확히 표현할 수없는 부분 중 하나가 10 진수 값 1/10입니다. 즉,

float

또는 double 변수는 0을 정확하게 나타낼 수 없습니다. 1 999. 이 코드를 실행 해보십시오: float x = 0. 1f; NumberFormat nf = NumberFormat. getNumberInstance ();

nf. setMinimumFractionDigits (10);

시스템. 아웃. println (nf. 형식 (x));

결과 출력은

0입니다. 1000000015

비록

0. 1000000015

~ 0이다. 1 , 정확하지 않습니다. 대부분의 경우 Java의 부동 소수점 연산은 중요하지 않으므로 충분히 근접합니다. 오류 마진은 극히 적습니다. 자바를 사용하여 집 크기를 측정하는 경우 전자 현미경을 사용하여 오류를 알아야합니다. 그러나 금융 거래를 처리하는 응용 프로그램을 작성하는 경우 정상적인 반올림을 사용하면 실수를 확대하여 중요하게 만들 수 있습니다. 페니 요금을 너무 많이 내지 너무 적게 부과 할 수 있습니다. 극단적 인 경우 인보이스에는 실제로 명백한 추가 오류가있을 수 있습니다. 정수형은 물론 바이너리 형식으로 저장됩니다. 그러나 정수는 부동 소수점 유형과 동일한 오류가 발생하지 않습니다. 정수가 정수를 나타내지 않으므로 정수 유형에 대해이 유형의 오류를 염려 할 필요가 없습니다.

0으로 나누기

수학의 기본 규칙에 따라 숫자를 0으로 나눌 수 없습니다. 이유는 간단합니다. 나누기는 곱셈의 역수입니다. 즉, a * b = c 인 경우

a = c / b

도 마찬가지입니다. b 가 0이되도록 허용하는 경우, 0을 곱한 숫자가 0이기 때문에 나누기는 의미가 없습니다. 따라서 a c 도 모두 0이어야합니다. 요컨대, 수학자들은 수세기 전에 0으로 나누는 것이 허용되지 않는다고 말함으로써 이러한 딜레마를 해결했습니다. Java 프로그램에서 숫자를 0으로 나누려고하면 어떻게됩니까? 대답은 정수 또는 부동 소수점을 나누는 지 여부에 달려 있습니다. 정수를 나누는 경우, 0으로 나누기를 시도하는 문은 프로그램을 무의식하게 중단시키는 예외

를 질식시킵니다. 이 예외를 가로 채서 여기에서 찾을 수없는 프로그램을 계속 진행할 수있는 방법이 있습니다. 그 동안, 당신이 쓰는 프로그램은 0으로 정수 나누기를 시도합니다. 부동 소수점 유형을 0으로 나누려고하면 결과가 너무 급격하지 않습니다. 대신 Java는 부동 소수점 결과에 아래 표에 나열된 특수 값 중 하나를 지정합니다. 다음 단락에서는 이러한 특수 값을 결정하는 방법을 설명합니다. 숫자를 0으로 나누고 두 숫자의 부호가 같으면 결과는 양의 무한대입니다.0. 0 999로 나눈 값이다. 0 999는 양의 무한대이고 999 - 34이다. 0-999-0으로 나눈 값이다. 0 999이다. 숫자를 0으로 나누고 숫자 기호가 다른 경우 결과는 음의 무한대입니다.

-40. 0 999로 나눈 값이다. 0 999는 음의 무한대이며 999입니다. 0 999로 나눈 값이다. 0 999이다.

0을 0으로 나누면 결과는 부호와 관계없이 숫자 (NaN)가 아닙니다.

  • float 및 double 클래스의 특수 상수 상수 의미 POSITIVE_INFINITY 양의 무한대 NEGATIVE_INFINITY 음의 무한대 NaN 숫자가 아님
  • 부동 소수점 0은 양수 또는 음수 일 수 있습니다. Java는 양수와 음수 0을 숫자로 동일하게 간주합니다. 이러한 특수 값 중 하나를 갖는 부동 소수점 값을 인쇄하려고하면 Java가 해당 값을 적절한 문자열로 변환합니다. 다음 문을 실행한다고 가정 해보십시오. double x = Math. sqrt (-50); // 숫자가 아님 double y = x; if (x == y) 시스템. 아웃. println ("x는 y와 같음"); i
  • -50이면 결과 콘솔 출력은
Infinity
입니다. 0 , 콘솔은
-Infinity 를 표시하고
i 가 0이면 콘솔에
NaN 이 표시됩니다.

NaN

는 그 자체와 같지 않습니다. 일부 이상한 결과가 발생할 수 있습니다. 예:

double x = Math. sqrt (-50); // 숫자가 아님

double y = x;

if (x == y)

시스템. 아웃. println ("x는 y와 같음"); 논쟁을 위해서

if

문은 변수

x 가 변수 y 와 같은지 테스트합니다. 이 테스트는 x 의 값을 y 에 할당하는 할당 문 바로 뒤에 있으므로 x y

와 같다고 가정 할 수 있습니다. 권리?

  • 잘못되었습니다. 999는 999이며, 999는 또한 999이다. NaN

는 다른

NaN

를 포함하여 다른 값과 같은 것으로 간주되지 않습니다. 따라서

if

문에서 비교가 실패합니다. 또 다른 이상한 결과: 숫자 자체가 항상 0이라고 가정 할 수는 없습니다. 다음 진술을 고려하십시오. double z = x - x; // 반드시 필수는 아닙니다. 이 문장은 항상 z 를 0으로 설정하면 안됩니까? x NaN 이 아닌 경우 이 경우 숫자가 아닌 숫자가 아니라 숫자가 아닙니다. 하나 이상의 이상 함: 무한대와 관련된 수학 연산은 무한대 또는 NaN 이됩니다. 예를 들어, Infinity + 5는 여전히 무한대와 동일하므로 Buzz Lightyear의 호출은 "무한 이상으로! "단지 일어나지 않을 것입니다. 그러나 무한대에서 무한대를 빼면 … NaN .

) - 더미 (Dummy)

편집자의 선택

Photoshop Elements 11 - Stone

Photoshop Elements 11 - Stone

을 사용하여 Stone Out을 조각하는 방법 Photoshop Elements 11의 도구를 입력하여 텍스트와 같은 모양의 선택 영역을 만든 다음 이미지 자체를 해당 유형의 채우기로 사용합니다. 예를 들어 꽃 테마 웹 페이지를 만드는 경우 꽃 그림을 텍스트 채우기로 사용할 수 있습니다. 유형 선택을 사용하면 모든 부분을 잘라낼 수 있습니다.

Photoshop Elements 9에서 여러 파일을 일괄 처리하는 방법 - 여러 개의 인형이있는 경우

Photoshop Elements 9에서 여러 파일을 일괄 처리하는 방법 - 여러 개의 인형이있는 경우

여러 파일에 공통적으로 적용 할 편집 기능을 사용하면 Photoshop Elements에서 이러한 변경 사항을 일괄 적으로 처리 할 수 ​​있습니다. 단일 메뉴 명령을 사용하여 파일 형식을 변경하고 파일 속성을 변경하고 공통 파일 기본 이름을 추가 할 수 있습니다. 파일 이름 바꾸기는 내보내기 명령의 일부일 수도 있고 사용할 수도 있습니다.

편집자의 선택

승마 2012 런던 하계 올림픽 - 인형

승마 2012 런던 하계 올림픽 - 인형

승마 (말의 화려한 이름) 경쟁 런던 2012 하계 올림픽은 조련사, 이벤트 및 점프의 세 가지 분야로 구성됩니다. 각 분야는 팀과 개인 메달을위한 기회를 제공합니다. 대회는 7 월 28 일부터 31 일까지 개최됩니다. 조련사 경연 대회는 8 월 2 일부터 9 일까지 개최됩니다. 점프 대회는 ...

동계 올림픽에서의 자유형 스키 - 인형

동계 올림픽에서의 자유형 스키 - 인형

프리 스타일 스키는 동계 올림픽의 X 게임 이벤트 중 하나입니다. . 자유형 스키에서는 경쟁자가 언덕 꼭대기에서 바닥까지 다양한 행사를 수행합니다. 프리 스타일 스키는 기술 스키의 가장 중요한 부분을 차지하며 스노우 보드에서 트릭을 만들어내는 기술과 결합되어 있습니다.

필드 2012 런던 하계 올림픽의 이벤트 - 인형

필드 2012 런던 하계 올림픽의 이벤트 - 인형

스프린트, 릴레이 및 도로 경주 이외에도 2012 런던 하계 올림픽 육상 경기에는 점프 및 던지기 경기가 포함됩니다. 남자와 여자는 높은 점프, 긴 점프, 트리플 점프, 장대 높이뛰기 등의 4 가지 점프 이벤트와 총구, 원반, 창 던지기 및 망치와 같은 네 가지 투구 이벤트에서 경쟁합니다. 필드 이벤트 ...

편집자의 선택

Excel의 유용한 범위 객체 메소드 2016 VBA 프로그래밍 - VBA 메소드가 수행하는

Excel의 유용한 범위 객체 메소드 2016 VBA 프로그래밍 - VBA 메소드가 수행하는

엑셀 2016의 액션. Range 객체는 수십 개의 메소드를 가지고 있지만, 이들 중 대부분은 필요하지 않습니다. 여기서는 가장 일반적으로 사용되는 Range 객체 메소드를 찾습니다. Select 메서드 Select 메서드를 사용하여 셀 범위를 선택합니다. 다음 문은 ...

시나리오 관리자를 사용하여 대출 계산 모델링 방법 - 더미

시나리오 관리자를 사용하여 대출 계산 모델링 방법 - 더미

시나리오 관리자는 목표 탐색 데이터 탭의 가정 분석 섹션에 데이터 테이블이 있습니다. 다른 유용한 도구와 함께 그룹화하면 시나리오 관리자가 중요한 도구임을 믿게 될 것입니다. 그러나 유용한 이름과 좋은 회사가 있음에도 불구하고 ...

더 나은보고 모델을 위해 Power Query와 Power Pivot을 함께 사용 - Power Pivot을 사용하여 더미

더 나은보고 모델을 위해 Power Query와 Power Pivot을 함께 사용 - Power Pivot을 사용하여 더미

Power Query를 함께 사용하면 관리 및 유지 보수가 쉬운보고 모델을 만들 수 있습니다. 보고 모델은보고 메커니즘이 구축되는 기초를 제공합니다. 데이터를 가져오고, 변환하고, 모양을 만들고, 집계하는보고 프로세스를 작성하면 본질적으로보고 모델을 구축하게됩니다. 잘못 작성하는 중 ...