Round отбрасывает дробную часть вместо округления (не пойму где косяк)

AmdY

Пью пиво
Команда форума
Eug..
198.866, а почему не 198.866921875 и как это может быть связано с приведением типов?
zerkms у нас сегодня день независимости, немцев победили, так и эту микро войну выиграем.
 

Eug..

Новичок
Автор оригинала: AmdY
Eug..
198.866, а почему не 198.866921875 и как это может быть связано с приведением типов?
zerkms у нас сегодня день независимости, немцев победили, так и эту микро войну выиграем.
Да нет войны, и задача решена, - осталась непонятка просто.
С начала.
--------------------------------------------------------------------
Значение $a (198866,921875) - беру из .csv файла
Значение $b (48,6328735351563) - беру из того же файла

далее - $b нужно просто округлить до 2 знаков,
а $a нужно разделить на 1000 и округлить до 3 знаков ;

пишу -
$bb = round($b, 2);

получаю $bb = 48 (ну правильно, разделитель дробной и целой части - не "." - 48 "округлилось" до 48-ми)
а если сделать так:

str_replace(",", ".", $b);
$bb = round($b, 2);

то все зашибись - 48.63

и в то же время, для $a

пишу:
$aa = round(($a / 1000), 3);
и сразу получаю 198.866

получается - деление превращает string-переменную в double-перерменную,
а округление нет?
 

MuXaJIbI41981

Новичок
ппц ..... когда ты делаешь $a / 1000 у тебя фактически делиться число 198866, а не 198866.921875
 

Eug..

Новичок
Автор оригинала: MuXaJIbI41981
ппц ..... когда ты делаешь $a / 1000 у тебя фактически делиться число 198866, а не 198866.921875
йопт.... и точно, было бы 198.967 !
Извиняйте господа!
Приятных выходных!
 

weregod

unserializer
кстати, результат выполнения неплохо было бы присваивать переменной какой-нибудь
PHP:
str_replace(",", ".", $b);
 
Сверху