SQL中的小数位

kbu*_*rns 4 mysql sql precision decimal

我正在计算百分比.一个例子是38589/38400

所以百分比是100*(38589/38400),等于100.4921875,但结果显示为100.

如何让它以x个小数显示?

同样,如果我希望2显示为2.000000,那么同样的工作会是什么?

谢谢!

Ric*_*iwi 14

您可以将其强制转换为特定的数据类型,该类型保留数据类型以及舍入到特定精度

select cast(100*(38589/38400) as decimal(10,4))
Run Code Online (Sandbox Code Playgroud)

FYI

select 100*(38589/38400)
# returns 100.4922, not 100 for me

select cast(2 as decimal(20,6))
# output : 2.000000
Run Code Online (Sandbox Code Playgroud)


Abe*_*ler 5

关于你的数字格式,你看过格式函数:

mysql> SELECT FORMAT(12332.123456, 4);
        -> '12,332.1235'
mysql> SELECT FORMAT(12332.1,4);
        -> '12,332.1000'
mysql> SELECT FORMAT(12332.2,0);
        -> '12,332'
Run Code Online (Sandbox Code Playgroud)

所以从2得到2.000000:

SELECT FORMAT(2,6);
Run Code Online (Sandbox Code Playgroud)

另外,根据mySQL关于分工的文档:

在使用/执行的除法中,使用两个精确值操作数时的结果比例是第一个操作数的比例加上div_precision_increment系统变量的值(默认为4).例如,表达式5.05/0.014的结果具有六位小数的比例(360.714286).

这些规则适用于每个操作,因此嵌套计算意味着每个组件的精度.因此,(14620/9432456)/(24250/9432456)首先解析为(0.0014)/(0.0026),最终结果为8位小数(0.60288653).

这将导致我同意@Cyber​​wiki关于您将从您的部门看到的结果.

  • 在MySQL中不需要添加.0.此外,使用FORMAT将返回VARCHAR类型,而不是数字. (2认同)