首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL中的小数位数

问SQL中的小数位数
EN

Stack Overflow用户
提问于 2011-03-17 06:24:09
回答 4查看 21.2K关注 0票数 4

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

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

我怎样才能让它以x个小数显示?

同样,如果我想将2显示为2.000000,同样的效果也可以吗?

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-17 06:29:01

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

代码语言:javascript
复制
select cast(100*(38589/38400) as decimal(10,4))

仅供参考

代码语言:javascript
复制
select 100*(38589/38400)
# returns 100.4922, not 100 for me

select cast(2 as decimal(20,6))
# output : 2.000000
票数 14
EN

Stack Overflow用户

发布于 2011-03-17 06:26:15

关于您的数字格式,您是否查看过format function

代码语言:javascript
复制
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,请这样做:

代码语言:javascript
复制
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关于您将从您的部门看到的结果。

票数 5
EN

Stack Overflow用户

发布于 2011-03-17 06:27:43

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

代码语言:javascript
复制
SELECT 100.0 * ((338589 * 1.0)/38400) ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5332583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档