Изменение десятичных разрядов в результате php-опроса - PullRequest
0 голосов
/ 08 декабря 2011

У меня есть следующий фрагмент кода для очень простого сценария опроса PHP

<h2>Result:</h2>
<table>
  <tr>
    <td>Yes:</td>
    <td><img src="poll.gif"
width='<?php echo(100*round($yes/($no+$yes+$maybe),3)); ?>'
height='20'> <?php echo(100*round($yes/($no+$yes+$maybe),3)); ?>% </td>
  </tr>
  <tr>
    <td>No:</td>
    <td><img src="poll.gif"
width='<?php echo(100*round($no/($no+$yes+$maybe),3)); ?>'
height='20'> <?php echo(100*round($no/($no+$yes+$maybe),3)); ?>% </td>
  </tr>
  <tr>
    <td>Maybe:</td>
    <td><img src="poll.gif"
width='<?php echo(100*round($maybe/($no+$yes+$maybe),3)); ?>'
height='20'> <?php echo(100*round($maybe/($no+$yes+$maybe),3)); ?>% </td>
  </tr>
  <tr>
</table>

Однако, если все они имеют равное количество голосов, я получаю результат, например 33,333333333%.Как уменьшить это значение до одного десятичного знака?

Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 08 декабря 2011

с помощью round после умножения на 100, а не до.

<?php echo round(($no/($no+$yes+$maybe) * 100 ),1) ; ?>

Ваш код также может быть немного упрощен до чего-то подобного

<?php
$votecount = $no+$yes+$maybe;
$yespercentage = round($yes / $votecount * 100,1);
$nopercentage =  round($no / $votecount * 100,1);
$maybepercentage =  round($maybe / $votecount * 100,1);
?>

<table>
  <tr>
    <td>Yes:</td>
    <td><img src="poll.gif"
width='<?php echo $yespercentage; ?>'
height='20'> <?php echo $yespercentage; ?>% </td>
  </tr>
  <tr>
    <td>No:</td>
    <td><img src="poll.gif"
width='<?php echo $nopercentage; ?>'
height='20'> <?php echo $nopercentage; ?>% </td>
  </tr>
  <tr>
    <td>Maybe:</td>
    <td><img src="poll.gif"
width='<?php echo $maybepercentage; ?>'
height='20'> <?php echo $maybepercentage; ?>% </td>
  </tr>
  <tr>
</table>
0 голосов
/ 08 декабря 2011

Вы пытались использовать number_format()?как $maybepercentage = number_format(round($maybe / $votecount * 100,1),1); например:

$maybepercentage =  number_format(round(90 / 120* 100,1),1);
echo $maybepercentage;

результат станет 75.0

0 голосов
/ 08 декабря 2011

В библиотеке PHP Math есть метод округления:

http://www.php.net/manual/en/function.round.php

Таким образом, в этом случае вы должны вызвать округление результата и указать, что вы хотите, чтобы он был до одного десятичного знака:*

$rounded_value = round($result,1);

Первый аргумент - это значение, которое вы хотите округлить, второй - количество десятичных разрядов - вы можете оставить его пустым или использовать 0, если вы не хотите использовать десятичные разряды.

...