Целочисленное деление в PHP дает ноль - как привести его к плавающей точке? - PullRequest
3 голосов
/ 18 марта 2012

В русской карточной игре Я пытаюсь вести статистику того, как часто ругается игрок (говорит «плохие слова» - а у нас их много на русском языке) в следующем PostgreSQLтаблица:

# select * from pref_chat order by swear desc;
           id            | swear | lines
-------------------------+-------+-------
 OK194281930260          |     3 |   153
 OK350321778615          |     2 |   127
 DE12770                 |     2 |   339
 OK122898831181          |     2 |    63
 OK349829847011          |     2 |   126
 OK215240745969          |     1 |    66
 OK459742722980          |     1 |    96

И мне нужно сгенерировать целое число этих данных - от 1 до 100 (переполнение в порядке) - чтобы я мог создать следующий "swear'o'meter :

enter image description here

Итак, я пытаюсь (с PHP 5.3 в CentOS 6.2): ​​

    $sth = $db->prepare('select swear, lines from pref_chat where id=?');
    $sth->execute(array($id));
    if ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
            $quotient = 100 * floor(20 * $row['swear'] / (1 + $row['lines']));
            print('<p><img src="https://chart.googleapis.com/chart?chs=700x100&cht=gom&chco=00FF00,FFFF00,FF0000&chxt=x&chxl=0:|Swearometer&chd=t:' . $quotient . '" width=700 height=100 alt="Swearometer"></p>)';
    }

К сожалению, я получаю ноль - потому что PHP, вероятно,делаю "целочисленное деление".

Я пытался добавить floor () к $ row ['swear'] и $ row ['линии '] , чтобы "бросить" их, чтобы плавать - но это не помогло.

ОБНОВЛЕНИЕ:

Извините, у меня была опечатка в моем оригиналевопрос ... Коэффициент $ действительно равен 0, я его распечатываю. Я также пробовал следующее, но все равно ноль:

$quot = 100 * floor(20 * $row['swear'] / (.1 + $row['lines']));

Ответы [ 2 ]

1 голос
/ 18 марта 2012

Ну, $row['swear'] / (1 + $row['lines']) всегда будет <<code>.05, учитывая числа, которые вы перечислите. Поэтому, когда вы умножите на 20, а затем floor, вы очень правильно получите 0.

0 голосов
/ 22 марта 2012

@ AlexanderFarber: Нет, извините, целочисленное деление в PHP не дает ноль, может быть, вы что-то упустили. Просто используйте ваше обычное деление.

...