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