首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有不同数值类型的除法

具有不同数值类型的除法
EN

Stack Overflow用户
提问于 2018-02-26 07:09:33
回答 2查看 417关注 0票数 0

我正在尝试使用子查询中的两个变量来计算一个比率,我希望我的结果在小数点后有三个值。

变量:

calls -- type(整数)

盒子--类型(浮动)

代码语言:javascript
复制
       ROUND((calls / boxes) * 100.0, 3) Call_Rate

仅返回两个小数点

当我使用

代码语言:javascript
复制
    (CAST(calls AS DECIMAL(10,3)) / (boxes AS DECIMAL(10,3)) * 100.0 Call_Rate

此代码返回小数点后的三位数,但第三位数始终为0,因此进行了四舍五入。

当将两个变量都转换为浮点数时,它也只返回十进制数后的2个值。

有没有办法执行这个操作,让它返回3个小数点。

EN

回答 2

Stack Overflow用户

发布于 2018-02-26 07:26:06

代码语言:javascript
复制
(CAST(calls AS DECIMAL(10,5)) / (boxes AS DECIMAL(10,5)) * 100.0 Call_Rate

当您乘以100时,您将小数点移动到正确的两位,因此您在小数转换中需要另外两位。

票数 1
EN

Stack Overflow用户

发布于 2018-02-26 15:56:24

第一次计算实际上四舍五入为三位数,但是您可能从SQL Assistant运行此查询,并且默认精度为2。您可以在工具>选项>要为浮动列显示的小数位数中对其进行更改

第二次计算的结果是基于Teradata的小数计算规则,见DECIMAL Result Data Type

简而言之:先乘后除

代码语言:javascript
复制
100 * CAST(calls AS DECIMAL(10,3)) / CAST(boxes AS DECIMAL(10,3)) AS Call_Rate

或者保留浮点并进行最后的强制转换:

代码语言:javascript
复制
cast( 100 * calls / boxes as decimal(10,3))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48979454

复制
相关文章

相似问题

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