You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Athena运算顺序异常:SQL表达式计算结果不符合预期

Athena返回整数结果的原因分析

你遇到的这个情况,核心原因分为两种,均和四舍五入无关:

1. 浮点数精度的固有限制

Athena基于Presto(Trino)引擎,默认使用DOUBLE类型处理浮点运算,而DOUBLE的有效数字仅为15-17位。当你给一个较大的整数(比如示例中的120.0)添加极小的小数时:

  • 若小分数小于当前数值的ULP(最低有效位单位),浮点数无法区分原数值和原数值加小分数的差异,直接返回原数值。以120.0为例,它的ULP约为1.47×10-14,只要你添加的小分数小于这个值(比如1×10-15),计算结果在DOUBLE类型中会被存储为120.0,这是浮点数的精度特性导致的,并非四舍五入。

2. 查询结果的默认格式化规则

如果你的小分数在浮点数可表示范围内(比如示例中的0.001),但Athena返回120.0,这是Athena控制台/客户端的默认显示规则导致的:

  • Athena会自动简化浮点数的显示,省略末尾的零或极小的小数位,但实际计算结果是精确的。你可以通过显式指定格式验证:
    select cast((10.0*12+10/10000) as decimal(18,6))
    
    执行这条语句会返回120.001000,证明实际计算值并未丢失。

内容的提问来源于stack exchange,提问作者Zain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 18:40:26