개인 재정 ) - 더미 (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)

편집자의 선택

플립 비디오 인형 치트 시트 - 인형

플립 비디오 인형 치트 시트 - 인형

플립 비디오 캠코더는 가장 사용하기 쉬운 캠코더입니다. 세계. 플립 비디오를 사용하면 비디오를 가리키고 촬영 한 다음 컴퓨터로 비디오를 복사 할 수 있습니다. 몇 번의 클릭 후, 당신은 Facebook, MySpace 및 YouTube에서 귀하의 작품을 과시하고 있습니다. Flip의 버튼을 해독함으로써 비디오를 고통없이 촬영하는 방법을 찾으십시오. 알아보기 ...

귀하의 디지털 필름에 대한 개인 상영 - 인형

귀하의 디지털 필름에 대한 개인 상영 - 인형

오늘, DSLR 필름 심사. HD가 장착 된 정교한 대형 스크린 TV는 여러 스피커의 서라운드 사운드 스테레오와 함께 아주 좋은 간식을 제공합니다. 따라서 영화 밤을 장소에서 쉽게 주최 할 수 있으며 영화관에 갈 수도 있습니다. ...

디지털 영화에 정적 제목을 추가하는 방법 - 인형

디지털 영화에 정적 제목을 추가하는 방법 - 인형

초연 요소는 다양한 선택을 제공합니다 DSLR 영화의 타이틀 선택 항목, 하위 3 분의 1 로케이터 정보. 로케이터 정보는 뉴스 세그먼트 및 다큐멘터리에서 장면의 사람이나 장소를 설명하는 데 사용되는 ID와 같습니다. 사람의 경우 이름과 설명이라는 두 줄로 구성됩니다. 예를 들어, Charles Dickens / Writer, ...

편집자의 선택

관계 속의 분노를 다루는 - 인형

관계 속의 분노를 다루는 - 인형

우리 모두는 때때로 파트너들과 화를 낸다. 분노가 당신과 당신의 관계에 미치는 파괴적인 영향을 최소화하는 데 도움이되는 다음 요령을 시도하십시오. 당신이 분노의 징후를 처음 알기 시작할 때, 당신의 파트너에게 무슨 일이 일어나는지 물어보십시오. 화가 난 사람을 상처 입히려 고합니다.

자폐증 진단의 영향 - 인형

자폐증 진단의 영향 - 인형

자폐아를 찾는 것이 매우 어렵습니다. 앞으로의 길은 쉬울 것이라고 아무도 말할 수 없습니다. 자녀의 생년월일과 본인의 생년월일에 관한 스크립트를 다시 작성해야 할 수도 있습니다. 당신은 지금 다루어야 할 새로운 쟁점, 압박 및 결정들을 가지고 있습니다. 그리고 주변 사람들은 ...

당신이 종속인지 결정하기 - 인형

당신이 종속인지 결정하기 - 인형

다음 증상 목록에서 확인하십시오. 당신은 모두가 공손 할 필요는 없으며, 코펜던트의 심각성 정도가 있습니다. 치료를하지 않으면 시간이 지남에 따라 코드 종속성이 악화되지만 도움을 받아 복구 할 수 있고 작업에서 훨씬 더 효과적 일 수 있습니다 ...

편집자의 선택

짧은 명상 묵상 시도 - 인형

짧은 명상 묵상 시도 - 인형

당신의 마음을 집중할 수있는 능력은 마음 챙김 명상을 통해 가장 강력하게 개발됩니다. Mindfulness 명상 중 하나는 호흡의 mindfulness입니다. 이것은 숨을 의식적으로 인식하는 것입니다. 명상을 스스로 시도하려면 다음 단계를 따르십시오. 자신의 호흡 감을 알아야합니다. 변경할 필요가 없습니다 ...

마음가짐의 세 측면 - 인형

마음가짐의 세 측면 - 인형

마음가짐은 세 가지 측면으로 주의 깊은 인식. 이 목록을 인쇄하여 핀이 무엇인지 생각 나게하십시오. 의도 - 당신의 의도는 당신이 마음가짐을 연습함으로써 얻고 자하는 것입니다. 스트레스를 줄이고 감정적 인 균형을 유지하거나 발견 할 수 있습니다.

다른 명상을 시도하십시오 - 인형

다른 명상을 시도하십시오 - 인형

명상 확장이라는 인식은 명상 확장의 중심에 있습니다. Mindfulness 명상 연습. 앉는 자리는 수천 년 동안 명상을 위해 그리고 정당한 이유로 사용되었습니다. 어떻게 평소에 앉아 있니? 당신이 대부분의 사람들과 비슷하다면, 아마 의자 나 소파 뒤에 기대어집니다. 네가 괜찮다면 ...