ロシアのカードゲームで、プレイヤーがどのくらいの頻度で悪態をつくか (「悪い言葉」を言います。ロシア語にはたくさんあります) の統計を、次の 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 :
だから私は試しています(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['swear']と$row['lines'] の先頭に追加して、フロートに「キャスト」しようとしましたが、これは役に立ちませんでした。
アップデート:
申し訳ありませんが、元の質問にタイプミスがありました... $quotient は実際には 0 です。出力します。私も次のことを試しましたが、まだゼロです:
$quot = 100 * floor(20 * $row['swear'] / (.1 + $row['lines']));