|
|
|
|
|
для: Trianon
(27.03.2007 в 18:08)
| | Как это не странно, но адекватного решения я так и не нашел...
Склоняюсь к совету г-на KPETuHа... | |
|
|
|
|
|
|
|
для: mindless
(27.03.2007 в 17:12)
| | у меня как-то подобного рода проблем не возникает :) | |
|
|
|
|
|
|
|
для: Trianon
(27.03.2007 в 10:49)
| | а вы не используйте функцию округления..
а просто показвйте 2 знака после запятой. тогда будет более менее | |
|
|
|
|
|
|
|
для: KPETuH
(27.03.2007 в 10:46)
| | Вероятно, в этом случае относительная погрешность меньшего значения будет самой высокой из возможных. | |
|
|
|
|
|
|
|
для: provodnik
(27.03.2007 в 09:56)
| | Могу предложить такой вариант складывайте все кроме самого маленького вчитыйте из 100 сумму и получайте меньшее значение, в таком случай у вас всегда будет 100 по сумме и небольшая погрешность по меньшему | |
|
|
|
|
|
|
|
для: provodnik
(27.03.2007 в 09:56)
| | Есть такая штука, как ошибка округления. Если Вы хотите видеть проценты целыми, то естественно, после суммирования ровно сотню Вы не получите. | |
|
|
|
|
|
|
|
для: moonfox
(26.03.2007 в 23:16)
| | если у вас всё правильно работает в таких случаях:
цитирую: При всего 6-ти голосах (3 голоса за первый вариант, 1 голос за второй вариант, 1 голос за третий вариант, 1 голос за 4-й вариант)
скрипт выводит 50%, 17%, 17%, 17% соответственно, что в сумме 101% !.
Дальше - ещё интереснее: если добавить 1 варианту 4-й голос, то выводится 57%, 14%, 14%, 14%, что в сумме 99%...
если добавить 1 варианту 5-й голос, то выводится 63%, 13%, 13%, 13%, а это в сумме 102%...
то я не знаю, наверное, мне стоит переквалифицироваться в какие нибудь грузчики... :( | |
|
|
|
|
|
|
|
для: provodnik
(26.03.2007 в 09:44)
| | однако... у меня все правельно работает:
<?
mysql_connect('localhost:3307','root','1224');
mysql_select_db('NN');
$query = mysql_query("SELECT SUM(answer) AS sum_answer FROM poll"); //достаем из базы сумму всех голосов
$sum = mysql_fetch_array($query);
$query = mysql_query("SELECT * FROM poll"); // достаем варианты ответа и количество голосов за этот вариант
while($message = mysql_fetch_array($query))
{
echo $message['variant']; // выводим вариант ответа
echo ", голосов: ".$message['answer'].", "; //выводим количество голосов за него
$q = round($message['answer']*100/$sum['sum_answer']); //вычисляем округленный процент
echo "-".$q."%<br />"; //выводим процент
}
echo "<br />Всего голосов: ".$sum['sum_answer']; // выводим общее количество голосов
?>
[code]
|
--
-- Структура таблицы `poll`
--
CREATE TABLE `poll` (
`id` int(1) NOT NULL auto_increment,
`variant` varchar(64) NOT NULL default '',
`answer` int(4) default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5 ;
--
-- Дамп данных таблицы `poll`
--
INSERT INTO `poll` (`id`, `variant`, `answer`) VALUES
(1, 'Да', 9),
(2, 'Нет', 0),
(3, 'Не думал об этом', 0),
(4, 'Неначто', 1);
[/code]
выдало результат
да, голосов: 9, -90%
нет, голосов: 0, -0%
Не думал об этом, голосов: 0, -0%
Неначто, голосов: 1, -10%
Всего голосов: 10
|
| |
|
|
|
|
|
|
|
для: moonfox
(26.03.2007 в 00:08)
| | :), мда... интересно.. что-то я никак не уловлю суть...
А мой код пробовали?
моя БД:
--
-- Структура таблицы `poll`
--
CREATE TABLE `poll` (
`id` int(1) NOT NULL auto_increment,
`variant` varchar(64) NOT NULL default '',
`answer` int(4) default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5 ;
--
-- Дамп данных таблицы `poll`
--
INSERT INTO `poll` VALUES (1, 'Да', 9);
INSERT INTO `poll` VALUES (2, 'Нет', 3);
INSERT INTO `poll` VALUES (3, 'Не думал об этом', 1);
INSERT INTO `poll` VALUES (4, 'Неначто', 1);
|
| |
|
|
|
|
|
|
|
для: provodnik
(25.03.2007 в 23:59)
| | почему у меня пашет?!
мистика...
самое простое:
<?
mysql_connect('localhost:3307','root','1224');
mysql_select_db('test');
$query = mysql_query("SELECT * FROM poll where id='1'");
while($data = mysql_fetch_array($query))
{$i=1;
$total=$data['count1']+$data['count2']+$data['count3'];
echo "всего ответов: ".$total."<br><br>";
echo "вариант 1: ".$data['answer1']." ".round($data['count1']*100/$total)."%<br>";
echo "вариант 2: ".$data['answer2']." ".round($data['count2']*100/$total)."%<br>";
echo "вариант 3: ".$data['answer3']." ".round($data['count3']*100/$total)."%<br>";
echo "<br><br>";
echo "ИТОГО: ".round(($data['count1']*100/$total)+($data['count2']*100/$total)+($data['count3']*100/$total))."%";
}
?>
|
БД:
--
-- Структура таблицы `poll`
--
CREATE TABLE `poll` (
`question` varchar(50) NOT NULL,
`answer1` text NOT NULL,
`count1` int(5) NOT NULL,
`answer2` text NOT NULL,
`count2` int(5) NOT NULL,
`answer3` text NOT NULL,
`count3` int(5) NOT NULL,
`id` int(5) NOT NULL auto_increment,
KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;
--
-- Дамп данных таблицы `poll`
--
INSERT INTO `poll` (`question`, `answer1`, `count1`, `answer2`, `count2`, `answer3`, `count3`, `id`) VALUES
('да или нет?', 'нет', 1, 'да', 0, 'незнаю', 0, 1);
|
| |
|
|
| |
|