SQL中的小数位

时间:2011-03-16 22:24:09

标签: mysql sql decimal precision

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

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

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

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

谢谢!

4 个答案:

答案 0 :(得分:14)

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

select cast(100*(38589/38400) as decimal(10,4))

FYI

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

select cast(2 as decimal(20,6))
# output : 2.000000

答案 1 :(得分:5)

关于您的号码格式,您查看了format function

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'

所以从2获得2.000000:

SELECT FORMAT(2,6);

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

  

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

     

这些规则适用于每个规则   操作,这样嵌套   计算意味着精度   每个组件。因此,(14620 /   9432456)/(24250/9432456),做出决议   先到(0.0014)/(0.0026),用   最终结果有8位小数   (0.60288653)。

这会让我同意@Cyber​​wiki关于你从部门看到的结果。

答案 2 :(得分:1)

您需要将其中一种类型转换为浮点数:

SELECT 100.0 * ((338589 * 1.0)/38400) ...

答案 3 :(得分:0)

关于结果显示100而不是100.4921875的原因,可能与相应列的类型有关,假设您将结果存储在表列中。确保该列的类型为Double。

如果您希望2显示为2.000000,只需将其乘以1.0,如下所示:

(select (100*(38589/38400*1.0))

,输出将显示:100.49219