문제

캐스팅이 데이터 손실과 작동 방식을 유발할 때를 이해하려고 노력합니다. 따라서 다음 예제에서는 데이터 손실이 있는지 이해하려고 노력합니다.i - int(4),f - float(4),d-double(8))

i == (int)(float) i; // sizeof(int)==sizeof(float) <- no loss
i == (int)(double) i; // sizeof(int)!=sizeof(double) <- possible loss
f == (float)(double) f;// sizeof(double)!=sizeof(float) <- possible loss
d == (float) d;// sizeof(double)!=sizeof(float) <- possible loss

유형 크기에만 답을 기반으로하기에 충분합니까? (+ 라운드)

도움이 되었습니까?

해결책

32 비트 int 및 정상 4 및 8 바이트 IEEE-754 FLOAS/DOUBLES를 가정하면 다음과 같습니다.

i == (int)(float) i;     // possible loss (32 -> 23 -> 32 bits)
i == (int)(double) i;    // no loss (32 -> 52 -> 32 bits)
f == (float)(double) f;  // no loss (23 -> 52 -> 23 bits)
d == (float) d;          // possible loss (52 -> 23 -> 52 bits)

INT는 32 비트의 정밀도를 가지고 있으며 플로트는 23 비트, 더블은 52 비트를 가지고 있습니다.

다른 팁

유형의 변수를 저장하기 위해 할당 된 메모리가 데이터 손실을 고려하는 유일한 사실은 아닙니다. 일반적으로 RoundOff로가는 방법과 CPU가 오버플로의 경우 숫자 데이터를 처리하는 방법은 당신이 살펴보고 싶은 다른 측면이 될 것입니다.

때문에 sizeof 메모리가 같은 크기가 데이터 손실이 있음을 의미하지는 않습니다.

0.5를 고려하십시오.

그것을 플로트에 보관할 수는 있지만 정수에 보관할 수 없습니다.

따라서 데이터 손실.

즉, 나는 그 케이크의 0.5를 원한다. 그것을 정수로 표현할 수 없습니다. 케이크를 많이 얻지 못합니다. 음

왜 정수? 예를 들어 정수 번호 만 필요할 수 있기 때문입니다. ID_num

왜 떠오는가? 실수 예에서 작업해야 할 수도 있으므로 % calculations

왜 이중인가? 플로트 크기에 맞을 수없는 실수가있는 경우

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top