格式数为2位小数

Ten*_*nza 146 mysql formatting decimal

我想知道如何输出一个带有2位小数的数字,而不是舍入原始数字.

例如:

2229,999 -> 2229,99
Run Code Online (Sandbox Code Playgroud)

我已经尝试过:

FORMAT(2229.999, 2)
CONVERT(2229.999, DECIMAL(4,2))
Run Code Online (Sandbox Code Playgroud)

谢谢

jma*_*eli 350

当数字格式为2位小数,你有两个选择TRUNCATEROUND.你正在寻找TRUNCATE功能.

例子:

没有舍入:

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

TRUNCATE(0.164, 2)
-- will be evaluated to 0.16
Run Code Online (Sandbox Code Playgroud)

docs: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
Run Code Online (Sandbox Code Playgroud)

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

  • 是的当然,但是我可以看到许多人发现我的答案很有帮助,或者他们在寻找ROUND命令时发现了这个问题.我会保持原样. (15认同)
  • 当你想要截断数字时,你应该使用`truncate`格式化数字.她在问题中明确表示这是她想做的事情.有很多种舍入方式(地板,天花板,零距离,零距离,半向上,半向下,半均匀).它们适用于不同的环境. (2认同)
  • 正如我之前所说.我知道这不是一个正确的答案,但人们往往喜欢它:)也许是因为问题标题可能是寻找`ROUND`功能的人的搜索结果. (2认同)

jas*_*unk 81

您想使用该TRUNCATE命令.

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

  • 截断总是"四舍五入".截断到2 DP的1.999将是1.99,其中2.00在数学上更正确.如果这不是问题,那么截断罚款,但你应该知道它. (9认同)

Hit*_*ony 13

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

  • 我认为你的意思是演员(2229.999为十进制(4,2)) (4认同)
  • CAST(2229.999 AS DECIMAL(4,2))将给你99.99.DECIMAL是最大位数**,包括**小数点左边的2.CAST(2229.99 AS DECIMAL(6,2))将给你2230.00 (4认同)
  • @Pacerier - 两者都在技术上有效.然而,转换的格式是用逗号转换(2229.999,十进制(4,2)),所以你可能是正确的,这就是他想要的. (3认同)

小智 7

只需使用format(number,qtyDecimals)样本:format(1000,2)结果1000.00