Re[3]: Текущий курс USD по центробанку
От: otaku Россия http://www.livejournal.com/users/amigo_otaku
Дата: 22.07.03 04:03
Оценка:
Здравствуйте, seregaa, Вы писали:


S>И все таки лучший вариант здесь
Автор: seregaa
Дата: 16.07.03


Сорри, просто не посмотрел ссылку.
Я и не подозревал, что ЦБ так заботиться о нуждах простого вебмастера и не только

Класс, там даже примеры на PHP есть
... << RSDN@Home 1.1 beta 1 >>
Re[8]: Проблема не совсем в этом
От: O-Sam Россия  
Дата: 13.08.03 12:57
Оценка:
Thanx!!

Вот только теперь такая проблема — не могу вытащить float значение из возвращаемого массива:


$baks=get_course();
$cost=100;
$cr=$baks[4]*$cost;
printf ("%f",$cr)


получаю 3000, несмотря на то, что $baks[4] равен 30,3524
Re[9]: Проблема не совсем в этом
От: DSD Россия http://911.ru/cv
Дата: 13.08.03 22:09
Оценка: 2 (1)
Здравствуйте, O-Sam, Вы писали:

OS>Thanx!!


OS>Вот только теперь такая проблема — не могу вытащить float значение из возвращаемого массива:



OS>
OS>$baks=get_course();
OS>$cost=100;
OS>$cr=$baks[4]*$cost;
OS>printf ("%f",$cr)
OS>


OS>получаю 3000, несмотря на то, что $baks[4] равен 30,3524


это из-за запятой. Дробная часть в float-значениях в идеале должна отделяться точкой.
иначе PHP при числовых операциях парсит число до первой ошибки — в нашем случае до запятой — получается 30. И ты его умножаешь на 100 — выходит 3000.

внутри функции get_course() немного измени предпоследнюю строку на:
  if (preg_match($regexp, $garbage, $matches)) return array($matches[1], $matches[2], $matches[3], $matches[4], str_replace(',','.',$matches[5]));


то есть возвращаешь вместо $matches[5] вот это: str_replace(',','.',$matches[5]) // заменяешь запятые на точки.
можно для верности так:

  if (preg_match($regexp, $garbage, $matches)) 
      return array($matches[1], $matches[2], $matches[3], $matches[4], floatval(str_replace(',','.',$matches[5])));


только функция floatval() судя по документации, доступна начиная с версии PHP 4.2.0

пример обновился: http://911.ru/to_rsdn/course.php
его исходник: http://911.ru/to_rsdn/course.php.html

Удачи.
--
DSD
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.