Xpoint
   [напомнить пароль]

Копейки

Метки: [без меток]
2013-04-02 11:02:42 [обр] KaMPiLeR+[досье]
сообщение промодерировано

Кто как выделяет из суммы копейки?

Что-то у меня алгоритм:

$kop=(int)( ( $L*100 - intval( $L )*100 )+0.0000001);

запнулся на сумме 2227793.55 и выдал 54 копейки.

Выделение копеек нужно для суммы прописью.

спустя 4 часа 48 минут [обр] Marat Tanalin(3/78)[досье]
Определить позицию символа «.» (точка) в исходном числе как строке; всё, что до точки — целая часть, после точки — дробная.
спустя 1 минуту [обр] KaMPiLeR+[досье]
сообщение промодерировано
Тоже так подумал — но как-то не кошерно — вместо точки может быть запятая. Смотря чо там вернет СУБД.
спустя 20 минут [обр] Marat Tanalin(3/78)[досье]
Можно сначала заменять запятую на точку. Хотя, если данные извлекаются из БД, то и формат их можно настроить нужным, заранее известным образом.
спустя 4 часа 15 минут [обр] Lynn «Кофеман»(98/571)[досье]

Числа с плавающей запятой и их особенности

Потому что

2227793.55 * 100 = 222779354.99999997

Я бы написал так:

$kop = (int)(($L - intval($L)) * 100)
спустя 11 часов [обр] Филипп Ткачев(20/112)[досье]
Marat Tanalin[досье] предложил наиболее разумный путь в данном случае. Можно пойти дальше и выкусить регуляркой.
спустя 2 часа 46 минут [обр] KaMPiLeR+[досье]
сообщение промодерировано

Для 2227793.53

$kop = (int)(($L - intval($L)) * 100

выдает 52 копейки.

Сделал через

$L=sprintf("%.2f",$L);

а потом

list($rubl,$kop)=explode('.',$L,2);
спустя 4 дня [обр] Филипп Ткачев(20/112)[досье]
KaMPiLeR[досье], для форматирования чисел есть хорошая функция.
Powered by POEM™ Engine Copyright © 2002-2005