Java에서 float이란 무엇입니까?


102

이 코드를 작성했습니다.

float b = 3.6;

그리고 나는 이것을 얻는다 :

오류 : 해결되지 않은 컴파일 문제 : 
    유형 불일치 : double에서 float로 변환 할 수 없습니다.

왜? 의 정의는 float무엇입니까?



1
@Sneftel이 질문의 중복이 아닙니다. 이 질문은 컴파일되지 않는 이유 (답은 ' f문자 에 a 를 추가해야 함 ')를 묻는 반면, 다른 질문은 f. 관련이 있지만 중복은 아닙니다.
Mark Rotteveel

meta.stackexchange.com/questions/217401/…을 참조하십시오 . 연결된 질문에 대한 답변은이 질문에 대한 답변입니다.
Sneftel

답변:


180

Java에서 십진수를으로 입력 3.6하면 double. double64 비트 정밀도 IEEE 754 부동 소수점이고 float32 비트 정밀도 IEEE 754 부동 소수점입니다. a float가 a 보다 덜 정확하기 때문에 double변환을 암시 적으로 수행 할 수 없습니다.

플로트를 만들려면 번호를 f(예 :)로 끝내야합니다 3.6f.

자세한 설명 은 Java 튜토리얼기본 데이터 유형 정의를 참조하십시오 .


40

그것을 만드십시오

float b= 3.6f;

부동 소수점 리터럴은 ASCII 문자 F 또는 f가 접미사 인 경우 float 유형입니다. 그렇지 않으면 그 유형은 double이고 선택적으로 ASCII 문자 D 또는 d로 접미사를 붙일 수 있습니다.


문자열에 float 값만 있는지 확인하는 방법이 있습니까?
MasterJoe

13

문제는 십진수는 기본적으로 두 배로 설정된다는 것입니다. 그리고 double은 float에 맞지 않기 때문에 의도적으로 float를 정의해야합니다. 따라서 다음과 같이 가십시오.

float b = 3.6f;

8

JAVA에서 값은 다음과 같습니다.

  1. 8.5
  2. 3.9
  3. (등등..)

float가 아닌 double로 간주됩니다 .

문제를 해결하기 위해 캐스트를 수행 할 수도 있습니다.

float b = (float) 3.5;

또 다른 해결책 :

float b = 3.5f;

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.