The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
printf, !*! cat, 24-Авг-07, 14:23  [смотреть все]
$perl -e 'printf("%07d",267.84*100)'
0026783

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

  • printf, !*! V, 19:16 , 24-Авг-07 (1)
    >$perl -e 'printf("%07d",267.84*100)'
    >0026783
    >
    >Господа, куда ушла единичка??

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

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

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

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

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

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

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

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




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру