Nice programing

round () 및 ceil ()이 정수를 반환하지 않는 이유는 무엇입니까?

nicepro 2020. 12. 8. 20:02
반응형

round () 및 ceil ()이 정수를 반환하지 않는 이유는 무엇입니까?


가끔씩 나는 일부 숫자를 반올림하고 항상 결과를 정수로 변환해야합니다.

int rounded = (int) floor(value);

모든 반올림 함수 ( ceil(), floor())가 정수가 아닌 부동 숫자를 반환하는 이유는 무엇 입니까? 나는 이것이 매우 직관적이지 않다고 생각하고 몇 가지 설명을 듣고 싶습니다!


이러한 함수에서 반환 된 정수 값이 너무 커서 정수 유형 (int, long 등)으로 저장할 수 없습니다. 정의되지 않은 결과를 생성하는 오버플로를 방지하려면 응용 프로그램에서 반환 된 값을 정수 유형에 할당하기 전에 범위 검사를 수행해야합니다.

ceil (3) Linux man 페이지에서.


그 때문에 float의 범위는보다 넓은 int들 '. 이러한 함수에서 반환 된 값이에 맞지 않으면 무엇을 기대할 수 int있습니까? 그것은 정의되지 않은 동작이며 프로그램에서 확인할 수 없습니다.

참고 URL : https://stackoverflow.com/questions/1253670/why-do-round-and-ceil-not-return-an-integer

반응형