float 연산을 integer처럼 검사하는 습관이 코드를 망친다

Float and integer arithmetic follow two different paradigms

float 연산을 integer처럼 검사하는 습관이 코드를 망친다

integer 연산에서는 사후 검사가 무의미하고 사전 예측이 필수지만, IEEE-754 float은 NaN과 무한대가 정상적으로 전파되므로 패러다임이 완전히 다르다. 저자는 FLT_EPSILON 같은 임의의 epsilon으로 0 나누기를 막는 관행이 실제로는 무용지물임을 보여준다. 3.4×10^38을 0.9로 나눠도 무한대가 나오기 때문이다. 해법은 연산 후 결과가 유한한지 isfinite로 확인하는 단 하나의 검사다. 다만 유한한 결과가 정확한 결과를 보장하지는 않는다.

float에는 많은 결함이 있지만, 적어도 이번만큼은 내 개인적인 의견으로, integer 연산보다 훨씬 편리하고 안전하게 다룰 수 있게 해준다고 생각한다.

이 날의 다른 글

2026-10-08