176

我想知道如何在不四舍五入的情况下输出一个小数点后 2 位的数字。

例如:

2229,999 -> 2229,99

我已经尝试过:

FORMAT(2229.999, 2)
CONVERT(2229.999, DECIMAL(4,2))
4

6 回答 6

396

将数字格式化为 2 位小数时,您有两个选项TRUNCATEROUND. 您正在寻找TRUNCATE功能。

例子:

不四舍五入:

TRUNCATE(0.166, 2)
-- will be evaluated to 0.16

TRUNCATE(0.164, 2)
-- will be evaluated to 0.16

文档:http ://www.w3resource.com/mysql/mathematical-functions/mysql-truncate-function.php

带四舍五入:

ROUND(0.166, 2)
-- will be evaluated to 0.17

ROUND(0.164, 2)
-- will be evaluated to 0.16

文档:http ://www.w3resource.com/mysql/mathematical-functions/mysql-round-function.php

于 2013-05-02T20:31:32.033 回答
90

您想使用该TRUNCATE命令。

https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html#function_truncate

于 2012-06-25T13:57:55.333 回答
19

如何 CAST(2229.999 AS DECIMAL(6,2)) 获得小数点后 2 位的小数

于 2012-06-25T14:00:56.407 回答
13

只需使用 format(number, qtyDecimals) 示例: format(1000, 2) result 1000.00

于 2018-03-14T15:33:24.760 回答
2

这就是我使用的示例:

CAST(vAvgMaterialUnitCost.`avgUnitCost` AS DECIMAL(11,2)) * woMaterials.`qtyUsed` AS materialCost
于 2017-12-17T20:25:27.690 回答
1

显示为小数 选择 ifnull(format(100.00, 1, 'en_US'), 0) 100.0

显示为百分比选择 concat(ifnull(format(100.00, 0, 'en_US'), 0), '%') 100%

于 2019-07-30T14:12:25.093 回答