ФорумПрограммированиеPHP для идиотов → Нужно округлить число (курс валют) из xml

Нужно округлить число (курс валют) из xml

  • Grohot

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 20 мая 2008 г. 10:17

    Здравствуйте. Вот написал такой скрипт:

    <?
    // Подключаемся
    $url = &quot;http://www.cbr.ru/scripts/XML_daily.asp&quot;;
    $source = file_get_contents($url);

    // находим доллар
    $patt = &quot;|<Valute ID=\&quot;R01235\&quot;>.*?</Valute>|is&quot;;
    preg_match_all($patt, $source, $out);
    $usd_source = $out[0][0];

    // выбираем нужное значение
    $patt = &quot;|<Value>.*?</Value>|is&quot;;
    preg_match_all($patt,$usd_source,$out);
    $usd = $out[0][0];

    ?>



    В $usd получается значение: 23,7462
    Нужно чтобы было два знака после запятой (23,74), или можно разделять точкой.

    Пробовал с помощью round()

    $usd = str_replace(&quot;,&quot;,&quot;.&quot;,$usd);
    $usd = round($usd, 2);


    Пробовал substr()

    $usd = substr($usd, 0, 5);


    Не получается, не пойму почему.
  • XoxMa

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 20 мая 2008 г. 10:42, спустя 25 минут 21 секунду

    $usd = substr($usd, 0, 5);
    Я бы сделал таким способом, хотя у тебя почему-то не работает.
  • megabit

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 20 мая 2008 г. 10:43, спустя 33 секунды

    надо чтоб не зпт была а &quot;.&quot; вот round(44.22432145, 2);
  • megabit

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 20 мая 2008 г. 10:44, спустя 1 минуту 17 секунд

    а запятную на точку сменить str_replace(&quot;,&quot;,&quot;.&quot;,$str);
  • AlexB

    Сообщения: 4288 Репутация: N Группа: в ухо

    Spritz 20 мая 2008 г. 11:08, спустя 24 минуты 19 секунд


    $usd = substr($usd, 0, 5);
    Я бы сделал таким способом, хотя у тебя почему-то не работает.

    А если целая часть будет трехзначная?
    Чем вас всех printf и number_format не устраивают?
  • kendo

    Сообщения: 446 Репутация: N Группа: Адекваты

    Spritz 20 мая 2008 г. 12:41, спустя 1 час 33 минуты 15 секунд

    Странно.. мне казалось, что в php есть тип (double). Даже в PHP In a Nutshell его видел.
    Ну-с, а вообще, я бы сделал так:
    $usd = ((integer)($usd*100))/100;

    Коротко и ясно :)
  • md5

    Сообщения: 11951 Репутация: N Группа: в ухо

    Spritz 20 мая 2008 г. 14:54, спустя 2 часа 12 минут 36 секунд

    где-то видел уже что-то вроде этого
    http://pyha.ru/articles/php/parsing/
    все умрут, а я изумруд
  • AlexB

    Сообщения: 4288 Репутация: N Группа: в ухо

    Spritz 21 мая 2008 г. 4:43, спустя 13 часов 49 минут 4 секунды


    Коротко и ясно :)
    Похоже здесь проводится конкурс на максимально изощренный код … )))
  • ghost

    Сообщения: ? Репутация: N Группа: Джедаи

    Spritz 21 мая 2008 г. 5:49, спустя 1 час 5 минут 28 секунд

    не.. пока патернов небыло - не максимально :)
    а то по принципу хело ворд! - инит, калк, декорейшин и тд
  • kendo

    Сообщения: 446 Репутация: N Группа: Адекваты

    Spritz 21 мая 2008 г. 12:39, спустя 6 часов 50 минут 19 секунд

    AlexB, у нас в стране плюрализм :) Сколько людей - столько и мнений. Это во-первых. Во-вторых, у всех кодеров разный опыт. Как говаривал один знакомый: &quot;Прежде чем найти золотую середину, необходимо познать обе крайности&quot;. :)
    P.S. помнится читал про конкурсы на самый запутанный код на Perl-е. Может быть на PHP такое же устроим? :)

Пожалуйста, авторизуйтесь, чтобы написать комментарий!