URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6704
[ Назад ]

Исходное сообщение
"printf"

Отправлено cat , 24-Авг-07 14:23 
$perl -e 'printf("%07d",267.84*100)'
0026783

Господа, куда ушла единичка??


Содержание

Сообщения в этом обсуждении
"printf"
Отправлено V , 24-Авг-07 19:16 
>$perl -e 'printf("%07d",267.84*100)'
>0026783
>
>Господа, куда ушла единичка??

perl -e 'printf("%07s",267.84*100)'
0026784


"printf"
Отправлено jd , 28-Авг-07 02:12 
>$perl -e 'printf("%07d",267.84*100)'
>0026783
>
>Господа, куда ушла единичка??

267.84 не переводится точно в двоичное представление, соответственно при вычислениях используется значение около 267.84 (немного меньше). Это можно наблюдать, если выполнить:

perl -e 'printf("%.20f", 267.84)'

При выводе целого результата, дробная часть (которая чуть меньше еденицы) отбрасывается.

Обычно в таких случаях используют округление. В Перле не силён и почему работает предложенный выше вариант (с "%07s") - не знаю. Очевидно, специфика приведения типов или типа того.


"printf"
Отправлено cat , 28-Авг-07 14:48 
>267.84 не переводится точно в двоичное представление, соответственно при вычислениях используется значение
>около 267.84 (немного меньше). Это можно наблюдать, если выполнить:
>
>perl -e 'printf("%.20f", 267.84)'
>
>При выводе целого результата, дробная часть (которая чуть меньше еденицы) отбрасывается.

ВО!! спасибо!