2014-09-25 2 views
1

Если у вас есть небольшой вопрос, я думаю.Рассчитать процент с PHP

Я использовал успешно код из этого ответа на определенный вопрос: Get DIV content from external Website

Он отлично работает. Выход I имеет, например, 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; 
+0

Спасибо за быстрый ответ! Можете ли вы показать мне, как преобразовать его в число? Я не уверен, как с этим справиться. – edow

+0

См. Добавленную строку кода в ответе. – Paul

+0

Спасибо, похоже, что это отлично работает! – edow

0

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

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

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

+0

Извините, оба ответа не работают для меня. Они все равно выводят 90. – edow

2

Попробуйте

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

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

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

Смежные вопросы