Java 또는 다른 언어에서 왜 f 또는 F가 float 값 뒤에 배치되는지 모르겠습니다. 예를 들어
float fVariable = 12.3f;
이것이 float 값임을 나타내는 것 외에 다른 기능이 있습니까?
Java 또는 다른 언어에서 왜 f 또는 F가 float 값 뒤에 배치되는지 모르겠습니다. 예를 들어
float fVariable = 12.3f;
이것이 float 값임을 나타내는 것 외에 다른 기능이 있습니까?
답변:
기본적 12.3으로 double리터럴이므로 컴파일러에게 float명시 적으로 처리하도록 지시하려면 -> f또는F
프로그램에서 숫자를 표현하는 방법이 너무 많기 때문에 Java 설계자는 각 양식을 선택하여 가장 일반적인 사용 사례에 할당해야했습니다. 기본값으로 선택된 양식의 경우 정확한 유형을 나타내는 접미사 는 선택 사항입니다.
그래서, 당신은 입력 할 때 12프로그램에서, 그게 전부 INT의 반대로 문자, 12L인 오래 . 그리고 당신은 입력 할 때 12.3하는 이잖아 이중 반대로 문자, 12.3F인 플로트 .
그렇다면 이것은 어디에 관련이 있습니까? 주로 다운 캐스트 처리 또는 전환 축소에 사용됩니다. long을 int로, double을 float로 다운 캐스트 할 때마다 데이터 손실 가능성이 존재합니다. 그래서 컴파일러는 것을 나타 내기 위해서 당신을 강제로 정말 이런 일에 대한 컴파일 에러 신호로의 축소 변환을 수행 할 :
float f = 12.3;
12.3은 double을 나타 내기 때문에 명시 적으로 float로 캐스트해야합니다 (기본적으로 축소 변환에서 사인 오프). 그렇지 않으면 올바른 접미사를 사용하여 숫자가 실제로 부동 소수점임을 나타낼 수 있습니다.
float f = 12.3f;
요약하자면 long 및 float에 대한 접미사를 지정하는 것은 언어 설계자가 정확히 숫자를 지정해야하는 필요성과 하나의 스토리지 유형에서 다른 유형으로 숫자를 변환하는 유연성의 균형을 맞추기 위해 선택한 타협입니다.
d최고입니다 double일부 수치 양의 표현 x, float f=(float)d가장 가까운 것 float의 조 당 부분 내에서의 어떤 값으로 x는 타입 변환을 필요로하더라도. 대조적으로, 경우는 f최고 float몇 가지 수치의 표현은 x, double d=f종종 갑자기 가까이 최선이 될 것입니다 경우에도 배역을 필요로하지 않습니다 double표현 x, 그리고으로 해제 될 수있다 크기 순서의 수백 . 나는 float f=(float)(1.0/10.0)캐스트 가 필요하지만 double d=1.0f/10.0f그렇지 않은 것이 아이러니하다고 생각 합니다 .
float그리고 double일부 값을 근사 표현 값을 제공 할 수있다. 예 : 12.3 또는 0.1
차이점은 float가 정확하지 않다는 것입니다 (더 작기 때문에 정밀도가 낮기 때문).
예
System.out.println("0.1f == 0.1 is " + (0.1f == 0.1));
System.out.println("0.1f is actually " + new BigDecimal(0.1f));
System.out.println("0.1 is actually " + new BigDecimal(0.1));
인쇄물
0.1f == 0.1 is false
0.1f is actually 0.100000001490116119384765625
0.1 is actually 0.1000000000000000055511151231257827021181583404541015625
그래서 0.1에서 가장 가까운 표현이다 double과 0.1f의 가장 가까운 표현입니다float
float fVariable = 12.3; 괜찮습니다. 그러나 표현식에서 식별자없이 float 값만 사용하면 컴파일러에게 값이 float임을 알려야하므로 값 뒤에 접미사 "f"를 사용합니다. 예
플로트 fl = 13f / 5f;
여기서 13과 5는 부동 소수점 값입니다.
Java에는 다양한 기본 변수 유형이 있으므로 일반화하기 위해 몇 가지 기본 기능이 있습니다. 입력 16.02를 주면 자동으로 이중 입력으로 간주됩니다. 따라서 그것을 float로 지정 하려면 숫자 뒤에 'f'를 언급 하거나 간단히 사용할 수 있습니다.
float f = (float) 16.02;
또는
float f = 16.02f;
같은 방식으로 숫자를 긴 유형으로 저장하려면 16 l 을 언급해야 합니다. 그렇지 않으면 자동으로 기본 유형, 즉 int 유형을 선택합니다.
Float는 단 정밀도 32 비트 IEEE 754 부동 소수점이고 Double은 배정 밀도 64 비트 IEEE 754 부동 소수점입니다. 소수점이있는 값을 사용할 때 0.23f (특히 float)로 지정하지 않으면 java는이를 double로 식별합니다.
10 진수 값의 경우 double 데이터 유형은 일반적으로 java에서 선택하는 기본 선택입니다. 이것을 확인하십시오
f를 사용하지 않으면 Java의 기본값 인 double로 해석됩니다. 다음과 같이 쓸 수도 있습니다. ##
float f=(float) 32.5956; float f=32.5956f;