>$perl -e 'printf("%07d",267.84*100)'
>0026783
>
>Господа, куда ушла единичка?? 267.84 не переводится точно в двоичное представление, соответственно при вычислениях используется значение около 267.84 (немного меньше). Это можно наблюдать, если выполнить:
perl -e 'printf("%.20f", 267.84)'
При выводе целого результата, дробная часть (которая чуть меньше еденицы) отбрасывается.
Обычно в таких случаях используют округление. В Перле не силён и почему работает предложенный выше вариант (с "%07s") - не знаю. Очевидно, специфика приведения типов или типа того.