Рассчитать процент с переполнением стека

Если есть маленький вопрос, я думаю.

Я успешно использовал код из этого ответа на определенный вопрос: Получить DIV контент с внешнего сайта

Работает отлично. Вывод у меня например 9,1.
Теперь я хочу сделать это в процентах, так что должно быть 91%.

$second_step[0] дает 9,1.

Я использовал следующий код, чтобы сделать его в процентах:

$score = $second_step[0] * 10;

…но это выдает 90 вместо 91.

Что я делаю не так? Это выглядит как простой код, но я не уверен, почему он выдает 90 вместо 91.

Надеюсь, кто-нибудь может мне помочь с этим.

Извините за мой плохой английский 🙂

1

Решение

Вероятно, связано с числовым форматом. Ваш пример показывает 9 [запятая] 1, который PHP будет видеть как строку, и при вычислении он возвращает первую числовую часть, с которой сталкивается скрипт (всего 9). Если вы хотите выполнять математические операции, вам нужно преобразовать его в число (чтение 9 [точка] 1).

$score = floatval(str_replace(',', '.', $second_step[0])) * 10;
1

Другие решения

Попробуй это

$val = floatval(str_replace(',', '', $second_step[0]));
2

Вы получаете 90, потому что он видит 10 как int.
Таким образом, ваш выход будет преобразован в int.

попробуй это:
$ score = $ second_step [0] * 10.0;
PHP видит 10 как int, а 10.0 как float.
Вы также можете разыграть 10 с плавающей точкой, выполнив это так:
$ score = $ second_step [0] * floatval (10);

Оба метода будут работать, но первый метод будет лучшим.

0

Ваш $second_step рассматривается как целое число, см http://php.net/manual/de/language.types.string.php#language.types.string.conversion если вы явно не измените язык скрипта, используя Setlocale().

Если запятая должна остаться там, и вы не изменили язык, вы можете, например, сделать $temp = str_replace("," , "." , $setlocale[1]);

0
По вопросам рекламы [email protected]