반응형
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
반응형
'Nice programing' 카테고리의 다른 글
PHP에서 문자열을 처음 20 개 단어로자를 수 있습니까? (0) | 2020.12.09 |
---|---|
Xcode 내역 (뒤로 / 앞으로) 키보드 단축키? (0) | 2020.12.09 |
C #에서 foreach 루프에서 값 형식 인스턴스의 멤버를 수정할 수없는 이유는 무엇입니까? (0) | 2020.12.08 |
Rails 3.1에서 SASS (Over SCSS)를 기본값으로 사용하는 방법은 무엇입니까? (0) | 2020.12.08 |
new EmptyResult () 반환 VS NULL 반환 (0) | 2020.12.08 |