round()返回不同的值

时间:2012-07-11 10:19:53

标签: php mysql postgresql

我在mysql DB rating中有一个数据类型为float(2,1)的字段。一行包含值0.5,但是当我使用

SELECT round(rating) FROM table WHERE ...给出值0而不是1。

但是SELECT round(0.5)给出了值1(对于Postgresql也是如此)。

此外,PHP始终为1

提供值echo round(0.5);

我真的很困惑。

3 个答案:

答案 0 :(得分:2)

将您的数据类型从float(2,1)更改为十进制(2,1),它可能适合您。

答案 1 :(得分:1)

尝试使用SELECT ROUND(rating)代替SELECT ROUND('rating')

ROUNDing一个字符串可能会给你带来奇怪的结果。您可能在列值之后,不应该使用'进行转义。

答案 2 :(得分:0)

使用

SELECT round('rating') FROM table WHERE ... 

你正在将字符串'评级'四舍五入,这就是为什么它给你零

尝试这个

SELECT round(rating) FROM table WHERE ...