Хитрое округление чисел

Тема в разделе "PHP", создана пользователем SpaceW, 29 окт 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. SpaceW

    SpaceW Постоялец

    Регистр.:
    27 сен 2007
    Сообщения:
    95
    Симпатии:
    45
    Здравствуйте! Такая проблема:
    достаю я из файла числа, например такие:

    PHP:
    -3.7
    -6
    -8.29324324
    -1.0451
    -1.35
    0.00
    2.46545
    0.33
    Естественно они в типе стринг, потому как работать с ними я не хотел, мне нужно было тупо их вывести в табличку.
    Но, формат в таблице такой: -х.хх либо х.хх, т.е. числа из примера должны вот так выглядеть

    PHP:
    -3.70
    -6.00
    -8.29
    -1.04
    -1.35
    0.00
    2.46
    0.33
    Что я сделал:
    if($data!="0.00") {
    $temp=round($data,2);
    }else{
    $temp=$data;
    }
    т.е. мы округляем все, кроме 0.00, НО остается проблема вот в каких числах:
    -3.7
    -6
    Как можно вычислить эти числа, что бы потом добавить к ним
    к -3.7 добавить 0 = -3.70
    к -6 добавить .00 = -6.00
    ?
     
  2. Darkmind

    Darkmind SNMP maniac

    Регистр.:
    31 май 2006
    Сообщения:
    184
    Симпатии:
    76
    Не надо извращаться
    Код:
    $temp = sprintf("%.02f", $data);
    
     
    SpaceW нравится это.
  3. SpaceW

    SpaceW Постоялец

    Регистр.:
    27 сен 2007
    Сообщения:
    95
    Симпатии:
    45
    Да, вот тут я совсем лопухнулся, мне стыдно :ah:
    :tcl:
     
  4. Darkmind

    Darkmind SNMP maniac

    Регистр.:
    31 май 2006
    Сообщения:
    184
    Симпатии:
    76
    Ничего такого ужасного, иногда приходится извращаться сильнее. Проблема частично лежит в отсутствии типизации переменных, поэтому по возможности с числами надо работать как с числами (соответствующих типов - integer, float), а со строками, как со строками. Leading zeroes (заполнение нулями) для строк реализуется через str_pad(), но делать в этом случае так не надо.
     
Статус темы:
Закрыта.