Я видел это в нескольких местах, где (int)someValue был неточным, и вместо этого проблема вызвала функцию round(). В чем разница между двумя?
В частности, если нужно, для C99 C. Я также видел ту же проблему в своих программах при записи их в java.