PHP圆数学问题?

时间:2010-01-06 02:29:21

标签: php math

如果value2counter11,则以下代码为何? $rating会是什么?

$rating = (@round($rs[value] / $rs[counter],1)) * 10; 

完整的代码如下。

function getRating(){
    $sql= "select * from vote";
    $result=@mysql_query($sql);
    $rs=@mysql_fetch_array($result);
    $rating = (@round($rs[value] / $rs[counter],1)) * 10; 
    echo $rating;
}

3 个答案:

答案 0 :(得分:3)

如果$rs['value'] = 2且$rs['counter'] = 11则

2/11 = .18181818181818
round(.181818181, 1) = .2 // This uses the ever popular rule of thumb. 
.2 * 10 = 2

我相信。如果没有,我真的搞砸AP统计......

BTW RTM。 :P

答案 1 :(得分:3)

嗯,这实际上取决于$rs[value]$rs[counter]包含的内容,而不是valuecounter本身。但我的问题是:

  

尝试时它返回了什么?

令人惊讶的是,这可能会给你正确答案,而不是让我们中的一个人为你做这件事。


回应你的评论:

  

我只是在检查我是否做得对。我无法弄清楚为什么我在代码中添加了“,1”。我完全忘记了,所以我想检查,也许这应该是我的问题?

也许,但是在StackOverflow上有一个充足的先例,随着时间的推移,被问到的问题经常被所谓的问题所取代。这不是问题,最好的帮助台式人员(包括像我一样照顾无数家庭电脑的人)是能够在不侮辱提问者情报的情况下梳理真实问题的人: - )

在任何情况下,round函数的1参数指定使用多少小数位数来舍入数字,所以:

round (1.2341234,0) = 1
round (1.2341234,1) = 1.2
round (1.2341234,2) = 1.23
round (1.2341234,3) = 1.234
round (1.2341234,4) = 1.2341

等等。

答案 2 :(得分:0)

您是否尝试过将文字值放入其中?

$rating = round(2 / 11,1) * 10; 
var_dump($rating);

0.18181 * 10 == 1.8181,正在向上舍入到2

编辑:

此外,round()上的错误抑制?真? $rs[value]应为$rs['value']