CodeGym/Java Blog/무작위의/Java Float 키워드
John Squirrels
레벨 41
San Francisco

Java Float 키워드

무작위의 그룹에 게시되었습니다
회원
컴퓨팅 기술 개발의 어느 시점에서 중앙 처리 장치에는 부동 소수점 숫자를 처리하는 하드웨어 장치가 필요하다는 것이 분명해졌습니다. 오늘날 모든 컴퓨터 아키텍처는 이러한 숫자를 사용하여 효과적으로 작동할 수 있습니다. 물론 프로그래밍 언어에서는 해당 데이터 유형 없이는 할 수 없습니다. Java에는 float와 double이라는 두 가지 부동 소수점 데이터 유형이 있습니다. Java Float 키워드는 메모리에서 32비트를 차지하는 실수를 정의합니다. 이 기사에서는 이러한 숫자에 대해 이야기하겠습니다.

부동 소수점 숫자. 실수는 컴퓨터에 어떻게 저장되나요?

컴퓨터 메모리에 실수를 저장하기 위해 특정 수의 비트가 할당됩니다. 실수는 부호(더하기 또는 빼기), 사마귀, 지수로 저장됩니다. 가수와 지수는 무엇입니까? 예를 들어 가장 잘 설명됩니다. 달의 대략적인 질량은 7*1022입니다. 여기서 7은 사마귀이고 22는 지수입니다. 화면에 아주 작은 숫자를 크게 표시하거나 그 반대로 표시할 때 7E22와 같은 항목을 볼 수 있습니다. 이것은 부동 소수점 숫자이고, 여기서 7은 사마귀이고, 22는 10의 지수 또는 거듭제곱입니다. 이 표기법을 지수 표기법이라고 합니다.

Java float 키워드 및 Java Double 키워드

Java의 부동 소수점 값(부동 소수점 숫자 또는 실수)은 floatdouble 유형으로 표시됩니다 . 소수점 이하 특정 부호까지의 값을 저장하는 데 사용되는 키워드입니다. double은 계산 결과로 주어지거나 얻은 값에 최대한 가까운 이중 정밀도의 숫자입니다. Java Double은 모든 수학적 계산(제곱근, 사인, 코사인 등)뿐만 아니라 특정 정확도가 중요한 모든 계산에 사용됩니다. float 데이터 유형은 덜 정확한 부동 소수점 유형에 사용됩니다. 메모리를 절약하기 위해 거의 사용되지 않습니다. 아래에는 float 및 double에 대한 주요 정보와 차이점이 포함된 표가 있습니다.
뜨다 더블
기본 Float는 단정밀도 값입니다. 배정밀도 값입니다.
기본 크기 4바이트(32비트) 8바이트(64비트)
기본값 0.0f 0.0
범위 1.4e–045에서 3.4e+038로 4.9e–324에서 1.8e+308로
무엇을 위해 사용됩니까? 메모리를 절약하려면 분수를 비교적 정확하게 다루다
따라서 Float 키워드는 메모리에서 32비트 또는 4바이트를 차지하는 숫자, 단정밀도 값을 의미합니다. 일부 프로세서에서는 이러한 숫자로 작업하는 것이 더 빠르며 이미 언급한 것처럼 배정밀도 숫자와 비교할 때 공간을 덜 차지합니다. 그러나 속도에 대해 명확하게 말하는 것은 불가능합니다. 일부 최신 프로세서가 정확히 배정밀도 숫자를 더 빠르게 처리한다고 가정해 보겠습니다.

Java Float 및 Double 선언

다른 유형의 숫자와 동일한 방식으로 여러 유형 의 double을 선언할 수 있습니다 .
double myDouble = 2.7;
그러나 이런 방식으로 부동 소수점 숫자를 표현하는 경우 컴파일러에서는 숫자 유형을 double로 변경하도록 요구합니다. 다음은 float 변수 의 잘못된 예입니다 .
public class FloatExample {
   public static void main(String[] args) {
//double and float variables
       double myDouble = 2.7;
       float myFloat = 3.14;
   }
}
이 프로그램을 실행하면 다음과 같은 일이 발생합니다.
Error:(4, 25) java: incompatible types: possible lossy conversion from double to float
사실 부동 소수점 숫자를 사용하는 것은 바람직하지 않으며 이는 메모리를 절약하기 위해서만 수행되어야 합니다. Java의 모든 실수 분수는 기본적으로 Double 이며 언어 구문에서도 이를 강조합니다. 정말로 float 유형으로 작업하려면 숫자 끝을 f로 명시적으로 지정해야 합니다.
public class FloatExample {
   public static void main(String[] args) {
//double and float variables
       double myDouble = 2.7;
       float myFloat = 3.14f;
   }
}
그런데 float 및 double 숫자는 지수 형식으로 작성할 수 있습니다.
float myFloat2 = 2E22f;
double myDouble2 = 3e10;
"정규" 표현에 충분히 큰 숫자를 사용하면 Java는 숫자를 지수 형식으로 즉시 표시합니다. 예를 들어보겠습니다:
public class FloatExample {
   public static void main(String[] args) {
//float variables
               float myFloatNumber1=2182818284590.45f;
               float myFloatNumber2=19822612787260.141592181f;
               System.out.println("myFloatNumber1 = " + myFloatNumber1);
               System.out.println("myFloatNumber2 = " + myFloatNumber2);
       System.out.println("myFloatNumber1 + myFloatNumber2 = " + myFloatNumber1 + myFloatNumber2);
           }
       }
이 프로그램 작업의 결과는 다음과 같습니다.
myFloatNumber1 = 2.1828183E12 myFloatNumber2 = 1.98226121E13 myFloatNumber1 + myFloatNumber2 = 2.1828183E121.98226121E13

특수 부동 소수점 및 이중 숫자의 예

Java 언어에는 오버플로 및 오류를 나타내는 데 사용되는 세 가지 특수 부동 소수점 숫자가 있습니다. 여기 있습니다:
  • 양의 무한대는 양수를 0으로 나눈 결과입니다. Double.POSITIVE_INFINITYFloat.POSITIVE_INFINITY 상수로 표시됩니다 .

  • 음의 무한대는 음수를 0으로 나눈 결과입니다. Double.NEGATIVE_INFINITYFloat.NEGATIVE_INFINITY 상수로 표시됩니다.

  • NaN(숫자 아님)은 0/0의 계산 또는 음수의 제곱근을 나타냅니다. 상수 Double.NaNFloat.NAN 으로 표현됩니다 .

다음은 이러한 특수 부동 소수점 숫자를 사용하는 예입니다.
public class FloatExample {
   public static void main(String[] args) {
       int myInt = 1;
       float zero = 0.0f;
       double negZero = -0.0;
       double negativeInfinity = Double.NEGATIVE_INFINITY;
       double positiveInfinity = Float.POSITIVE_INFINITY;

       System.out.println(myInt / zero);
       System.out.println(myInt / negZero);
       System.out.println(zero == negZero);
       System.out.println(negativeInfinity * 0);
       System.out.println(positiveInfinity+negativeInfinity);

   }
}
결과는 다음과 같습니다.
무한대 -무한대 true NaN NaN

이중 정밀도로 충분합니까?

실제로 Double 유형의 이중 정밀도에도 불구하고 예를 들어 재무 계산에서 부동 소수점 숫자를 사용하는 것은 반올림 오류가 허용되지 않기 때문에 최선의 방법은 아닙니다. 따라서 다음 프로그램의 출력을 화면에 표시해 보십시오.
public class FloatExample {
   public static void main(String[] args) {
       System.out. println( "2.0 - 1.1 = " + (2.0 - 1.1));
   }
}
다음과 같은 결과를 얻게 됩니다:
2.0 - 1.1 = 0.8999999999999999
결과가 0.9라고 가정하는 것이 논리적입니다. 그러나 이러한 오류는 매우 일반적이며 숫자의 내부 이진 표현과 관련이 있습니다. 예를 들어, 1/3의 정확한 값을 소수로 표현할 수 없습니다. 물론 바이너리 시스템에도 비슷한 제한이 있습니다. 작업에서 반올림 오류를 제거해야 하는 경우 Java에는 이를 위한 BigDecimal 클래스가 있습니다.
코멘트
  • 인기
  • 신규
  • 이전
코멘트를 남기려면 로그인 해야 합니다
이 페이지에는 아직 코멘트가 없습니다