programing

변수를 int 대 round() 함수에 사용

powerit 2023. 7. 22. 10:29
반응형

변수를 int 대 round() 함수에 사용

나는 그것을 여러 곳에서 보았습니다.(int)someValue부정확했고 대신 문제가 발생했습니다.round()기능.둘 사이의 차이점은 무엇입니까?

특히, 필요한 경우 C99 C에 대해.나는 또한 자바로 프로그램을 작성할 때 같은 문제를 본 적이 있습니다.

캐스팅하는 경우float/double에 가치를 두는.int일반적으로 정수 절단으로 인해 부분적인 부분이 느슨해집니다.

이는 일반적으로 예상되는 반올림과 상당히 다르므로 예를 들어 2.1이 2인 것처럼 2.8은 정수 자르기를 통해 2로 끝납니다.

업데이트:

주조 시 잠재적(총) 부정확성의 또 다른 원인은 부동 소수점 유형과 반대로 정수로 표현할 수 있는 값의 제한된 범위 때문입니다(아래 설명에서 @R이 이를 상기시켜 준 덕분입니다).

  1. 캐스팅 대상int부동 소수점 번호를 잘라냅니다. 즉, 분수 부분을 삭제합니다.
  2. round함수는 가장 가까운 정수를 반환합니다.예를 들어, 사건의 절반은 0에서 반올림됩니다.round(-1.5)이라-2그리고.round(1.5)이라2.

7.12.9.6 라운드 기능

시놉시스

#include <math.h>
double round(double x);
float roundf(float x);
long double roundl(long double x);

묘사

round함수는 인수를 부동 소수점 형식의 가장 가까운 정수 값으로 반올림하고, 현재 반올림 방향에 관계없이 0에서 반올림합니다.

돌아온다

round함수는 반올림된 정수 값을 반환합니다.

출처: C99 표준 (ISO/IEC 9899:1999).이 섹션은 C11 표준(ISO/IEC 9899:2011)에서 변경되지 않았습니다.

(관심 있는 사람들을 위해, 반올림 알고리즘에 대한 명확한 소개가 있습니다.)

언급URL : https://stackoverflow.com/questions/11128741/cast-variable-to-int-vs-round-function

반응형