【发布时间】:2018-08-21 17:43:04
【问题描述】:
我正在做一个使用数据库的实验,结果很奇怪。
系统是这样的: 我有一个按钮,每次单击它时都会向计数器添加 1。 一旦达到一定数量,就会计算扣分并更新分数
PHP:
$counter = $_POST['counter'];
$user = $_POST['user'];
$sql = "SELECT score FROM board WHERE player = '$user'";
$result = mysqli_query($con,$sql);
$row = mysqli_fetch_array($result);
if($counter == 1)
$divisor = 0;
else if($counter == 5)
$divisor = 0.1;
else if($counter == 20)
$divisor = 0.3;
else if($counter == 50)
$divisor = 1;}
$deduction = $row['score'] * $divisor;
$sql = "UPDATE board SET score = score - ".$deduction." WHERE player = '$user'";
我从 score = 10 开始 这些就是结果
Score: 10
Counter: 1
Divisor = 0; Deduction = 10 * 0;
UPDATE ... score = score - Deduction (0)
New score = 10
-------------------------------------
Score: 10
Counter: 5
Divisor = 0.1; Deduction = 10 * 0.1;
UPDATE ... score = score - Deduction (1)
New score = 9
-------------------------------------
Score: 9
Counter: 20
Divisor = 0.3; Deduction = 9 * 0.3;
UPDATE ... score = score - Deduction (2.7)
New score = 6.3
-------------------------------------
## Here is the curious part
Score: 6.3
Counter: 50
Divisor = 1; Deduction = 6.3 * 1;
UPDATE ... score = score - Deduction (6.3)
New score = 0.000000190735
知道我为什么会得到 0.000000190735 吗? 我现在有点迷茫。
B'rgrds,
【问题讨论】:
-
这只是一个舍入误差。报告您对任何小于 7dp 的答案,它将显示为零。
-
这是我第一次听说舍入错误。让我想到这种情况发生了多少
-
顺便说一句,你认为这与我使用数据类型 Float 而不是 Double 有什么关系吗?
标签: php sql calculation