MySQL Decimal 四舍五入

4

我对MySQL很陌生,需要一些基本的帮助。

我需要对小数进行四舍五入,例如:

21,4758 应该变成 21,48

0,2250 应该变成 0,22

23,0850 应该变成 23,08

22,9950 应该变成 22,99

我尝试了很多方法但都无法实现。

谢谢。

2个回答

8

试试这个:

// round the value to two decimal places 
SELECT ROUND(<YOUR_FIELD>, 2) field FROM <YOUR_TABLE>
// use truncate if you don't wan't to round the actual value
SELECT TRUNCATE(<YOUR_FIELD>, 2) field FROM <YOUR_TABLE>
// you can also use round or truncate depending whether the third decimal is > 5
SELECT IF(SUBSTR(<YOUR_FIELD>, 5, 1) > 5, 
   ROUND(<YOUR_FIELD>, 2), 
   TRUNCATE(<YOUR_FIELD>, 2)) field 
FROM <YOUR_TABLE>;

以上并非完整解决方案,但或许能指引您朝正确的方向前进。

请阅读mysql round()mysql truncate()的文档。


它将0.2250变成0.23,这是不起作用的。0.2250应该是0.22。 - Can
@Can - 我更新了我的答案,你应该使用truncate而不是round,尽管你也想将值四舍五入。 - Cyclonecode
是的,谢谢Krister,前三次都有效。但这一次,22,9950返回23. - Can
@Can - 我不明白为什么不能像普通方式那样四舍五入数字? - Cyclonecode

7
DECLARE @old decimal(38, 10)
DECLARE @p decimal(38, 10)
SET @p = 21.4758

SET @p = @p * 100
SET @p = @p - 0.01
SET @p = ROUND(@p, 0)
SET @p = @p / 100.0
SELECT @p

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接