정수 값으로 부동 소수점을 반복적으로 반올림하기위한 C 코드를 작성했습니다. 표준 C 수학 라이브러리는 floor()
및 ceil()
기능을 포함합니다. floor() 및 ceil() 함수와 C의 정수로 캐스팅 비교
int up, down;
float test = 1.3548;
up = (int)(test + 1); //ceil()
down = (int)test; //floor()
내가 빠른 검사를했고이 잘 작동하는 것 같다 : 나는 기능을 훨씬 더 빨리 구현 정수로 직접 캐스팅하는 것으로 나타났습니다.
- 이 안정적 올림 방법 및 I 배열 인덱스로, 정수로 결과 필요하다면 다운 (즉 항상 올바른 결과를 반환한다)?
- 속도가 크게 향상되어야하는 이유가 있습니까? 음수가있을 때
신뢰할 수있는 방법은 아닙니다. 'test'가'4.0'과 같은 정수 값 인 경우를 생각해보십시오. 이 경우'floor (x) == ceil (x)'이지만 코드는'up = 5; down = 4'이다. – njuffa
정말 빠릅니까? 실적 테스트를 보여주세요! – Sulthan
"신뢰할 수있는"의미에 따라 다릅니다. "신뢰할 수있는"은 "작동 할 것"을 의미하면 그렇습니다. 그러나 "항상 아래/위/가까운/제로/등 ..."과 같이 더 많은 것을 의미하는 경우에는 양수 및 음수에 대한 다양한 방법을 시도해야합니다. 무슨 일이 일어나는지 알기 위해서'int'의 범위를 벗어날 수있는 것들처럼 ... 당신의 특정 상황에 맞는 "올바른"방법을 선택할 수 있습니다 ... 오, 그리고 아마도'up = (int) (test + 0.5) '- 그것에 대해 생각해보십시오 ... – twalberg