1. bash / Говнокод #11917

    −118

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    FPOINT=$1
    test ${FPOINT:12:2} = "e-" && echo 0 && exit 0
    FPOINT=$1 ; FPOINT=${FPOINT/,/.}
    MANT=${FPOINT//e*/} ; EXP=${FPOINT:((${#FPOINT}-2)):2} ;
    echo "define i(x) {auto s;s=scale;scale=0;x/=1;scale=s;return(x);} ; i(${MANT}*10^${EXP})" | bc

    rrdtool хранит и что самое противное выводит при запросе данные в формате с плавающей запятой, том самом который выглядит так: 1.2345678901e+09
    а баш в свою очередь не умеет работать с float, так что для коекакой работы с этими базами на баше пришлось написать такую функцию.
    Учитывая что у меня только положительные значения, пока ошибок не было.

    Запостил: bliznezz, 12 Октября 2012

    Комментарии (3) RSS

    • [g]awk - наше всё. Такой херни не потребуется.
      Ответить
    • Ну видно же, что шелл как язык не справляется с конкретной задачей.
      Почему бы не переписать скрипт на, скажем, перле? Зачем так надрываться?
      Ответить
    • # printf "%.0f\n" 1,2345678901e+09
      1234567890
      # echo $BASH_VERSION
      4.1.2(1)-release
      Ответить

    Добавить комментарий