(double) number_format()

Cruiser

Новичок
(double) number_format()

В мускуле числа лежат с разделителем "."
PHP:
$summ+=(double)$t[$id][kol]*(double)$t[$id][cena_nds];
отбрасывает плавающую точку, $summ содержит
пробовал так:
PHP:
$summ+=(double)$t[$id][kol]*(double)number_format($t[$id][cena_nds]);
все равно округляет.
как исправить можно?
 

Cruiser

Новичок
я хочу чтоб копейки не отбрасывало.
запутался в number_format()
 

Romantik

TeaM PHPClub
[m]number_format[/m]
а что,
PHP:
$summ+=$t[$id][kol]* $t[$id][cena_nds];
отбрасывает копейки?
 

Cruiser

Новичок
Romantik, отбрасывает

-~{}~ 24.09.04 17:56:

если разделитель запятая "," то все работает :(
ничего не пойму
 

Фанат

oncle terrible
Команда форума
Cruiser
в базе надо хранить в поле decimal
и суммировать тоже в базе
 

Cruiser

Новичок
я и храню в decimal(8,2)
зачем мне в базе суммировать? у меня в скрипте суммируется
 

Cruiser

Новичок
Я и сам в ступоре :( :(

-~{}~ 24.09.04 22:26:

$summ1=88.30;
$summ2=2;
print $summ1*$summ2; выдает 176,6 - все нормально
а из переменных выдает 176 ровно.
Черная магия блин, что же делать то??
 

XiMiK

Новичок
ты var_dumpом проверил, а то я уверен, что 176,6 - это float, a 176 уже integer. Другого обьяснения я не нахожу.
 

Cruiser

Новичок
Romantik, из этих $summ+=(double)$t[$id][kol]*(double)$t[$id][cena_nds];

-~{}~ 25.09.04 14:29:

а в пхп по дефолту разве разделитель запятая ","?
 

Cruiser

Новичок
Romantik, я выше написал что без явного указания типов
все равно округляет.
Вот. Добился своего через извращения :D
PHP:
$t[0]['kol']=2;
$t[0]['cena_nds']=88.30;
$cena_nds=eregi_replace('\.',',',(string)$t[0]['cena_nds']);
$summ=(double)$t[0][kol] * (double)$cena_nds;
print sprintf("%01.2f руб.", $summ);
выводит 176.60 руб.
Слава аллаху :)
 

Romantik

TeaM PHPClub
Кто такой Слава Аллах я не знаю, но у меня этот код работает
PHP:
$t[0]['kol']=2;
$t[0]['cena_nds']=88.30;
echo $t[0][kol] * $t[0][cena_nds];
 
Сверху