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

Eug..

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

// $btp = 48,6328735351563

хочу округлить до 2 знаков после запятой -

echo $btp; // 48,6328735351563
echo round($btp, 2); // 48 (???)

и вообще, дробная часть попросту отбрасывается после любого действия:
например -

echo $btd - 1; // 47 (!???)

re:
settype($btd, "float"); - не помогает
 

AmdY

Пью пиво
Команда форума
замечательная ошибка :), вот это для собеседования подойдёт, на приведение типов.
 

Фанат

oncle terrible
Команда форума
да, пожалуй.
и var_dump() тут не поможет, что обидно
 

Eug..

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

Автор оригинала: Eug..
// $btp = 48,6328735351563

хочу округлить до 2 знаков после запятой -

echo $btp; // 48,6328735351563
echo round($btp, 2); // 48 (???)

и вообще, дробная часть попросту отбрасывается после любого действия:
например -

echo $btd - 1; // 47 (!???)

re:
settype($btd, "float"); - не помогает
точнее так (результат правда прежний)

$btp = '48,6328735351563';
settype($btd, "double");
echo gettype($btd).'<br>';
echo $btp.'<br>';
echo round($btp, 2).'<br>';

результат:

double
48,6328735351563
48
 

zerkms

TDD infected
Команда форума
Eug..
перечитай, пожалуйста, тему с самого начала. всю. полностью. внимательно.
 

Eug..

Новичок
Автор оригинала: zerkms
Eug..
перечитай, пожалуйста, тему с самого начала. всю. полностью. внимательно.
Ок, - с заменой , на . - все пошло, а в примере:

$a = '198866,921875';
echo $a.'<br>';
echo round(($a / 1000), 3);

результат:

198866,921875
198.866

от того, что при делении , меняется на . автоматом

--------------------
Спасибо за помощь!
 

zerkms

TDD infected
Команда форума
феноменально. всего час потребовалось :)
 

Фанат

oncle terrible
Команда форума
ничего там автоматом не меняется. не пиши глупостей
 

HEm

Сетевой бобер
популярно:

в своем примере ты мог с таким же успехом написать
$a = '198866запятая921875';
 

nerezus

Вселенский отказник
> и var_dump() тут не поможет, что обидно
Как раз поможет. Примененный к нужной переменной.
А еще лучше сразу отладчик, чтобы показал сразу все значения всего.
 

Eug..

Новичок
Автор оригинала: HEm
популярно:

в своем примере ты мог с таким же успехом написать
$a = '198866запятая921875';
ну да, вот я и говорю -

при round(($a / 1000), 3);
"запятая" автоматически меняется на "." ($a из string переходит во float)

а при round($a, 3);
этого не происходит
 

AmdY

Пью пиво
Команда форума
Eug..
почему ты считаешь, что запятая автоматически меняется при $a / 1000?
 
Сверху