我在计算百分比。一个例子是38589/38400
所以百分比是100 *(38589/38400),等于100.4921875,但结果显示为100.
如何让它以x个小数位显示?
同样,如果我希望2显示为2.000000,那么同样的工作吗?
谢谢!
答案 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)。
这会让我同意@Cyberwiki关于你从部门看到的结果。
答案 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