PHP中的整数除法产生零 - 如何将其转换为浮点数?

时间:2012-03-17 20:22:44

标签: php php-5.3 division integer-division

a Russian card game中,我试图在下面的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

所以我正在尝试(在CentOS 6.2上使用PHP 5.3):

    $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 ['发誓'] $ row ['lines'] “施放”他们漂浮 - 但这没有帮助。

更新

抱歉,我的原始问题中有一个拼写错误... $商是真的0,我把它打印出来。我也试过以下,但仍然为零:

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

2 个答案:

答案 0 :(得分:1)

嗯,$row['swear'] / (1 + $row['lines'])总是&lt; .05给出您列出的数字。因此,当您乘以20然后乘以floor时,您将非常正确地获得0

答案 1 :(得分:0)

@AlexanderFarber:不,对不起PHP中的整数除法不给零可能是你遗漏了什么。只是使用你平时的分工。