숫자 연산 시 주의사항

 자바에서 이미지 관련 알고리즘(Floyd-Steinberg 디더링)을 구현했는데 결과가 이상하게 나왔습니다.

도무지 원인을 몰라서 한참 삽질을 하다가 이대로는 안 되겠어서 하루자고 머리좀 식힌 후 다시해보니 양자화 오류값을 주위 픽셀에 덧셈할 때 항상 0을 더하더군요..

코드는 다음과 같았습니다.

image[y][x] += 7/16 * 양자화오류값


도대체 왜그러나하고 생각해보니..

7/16이 정수형이라서 결과값이 0이 되었습니다.

7/16 = 0

0 * 양자화오류값 = 0


다음과 같이 고친 후에야 알고리즘이 정상화되었습니다.

image[y][x] += 7f/16 * 양자화오류값


잘못된 것을 깨달을 수 있는 지혜를 주신 하나님께 감사드립니다.





댓글

이 블로그의 인기 게시물

프로세스 강제 종료 불가 시.

Visual Studio 디버깅 시 멈춰있는 문제