double
16 진수 표기법을 사용하여 직접 초기화하고 싶습니다 . 나는 이것이 다음 예에서 int
와 Long
같이 작동 한다는 것을 알고 있습니다 (결과 값은 항상 옳음).
int i = 0x10000000; // 268435456
Long li = 0x1000000000000000L; // 1152921504606846976
반면에 복식으로 똑같이 시도하면 작동하지만 4 바이트 범위에서만 작동합니다 (코드 예제에서 주석보기). 두 번째로 유효한 표기법이 아닌 경우 Netbeans IDE는 정수 값이므로 너무 큽니다.
double d1 = 0x10000000; // 2.68435456E8
double d2 = 0x1000000000000000; // not valid
float
-값은 4 바이트 범위에서 작동합니다.
float f1 = 0x10000000; // 2.68435456E8
Long
표기법에 "L"이 없다는 16 진수 표기법으로 a를 쓸 수있는 유일한 이유가 있습니까 (float의 경우 "f"또는 double 표시의 경우 유효하지 않은 "."와 대조) ?double
되지 Long
않습니까?귀하의 조언과 제안에 감사드립니다.
긴 범위의 정수 값으로 double을 초기화하려면 다음을 사용하십시오.
double d2 = 0x1000000000000000L;
BigInteger를 사용하여 긴 범위 밖의 정수 16 진수 값을 제공 할 수도 있습니다.
double d3 = new BigInteger("123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0", 16).doubleValue();
이전 답변에서 제안한대로 16 진수 분수를 제공해야하는 경우 16 진수 부동 소수점 리터럴을 사용합니다.
double d = 0x1F.1p1;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다