Sql中的AVG - 浮点数问题

Posted

技术标签:

【中文标题】Sql中的AVG - 浮点数问题【英文标题】:AVG in Sql - Float number problem 【发布时间】:2010-11-09 07:11:18 【问题描述】:
SELECT     AVG(variable) AS Expr1, SUM(variable) AS Expr2
FROM       ......

AVG 的结果是 2,但它不是真的,它必须是 2.95。有什么问题,有什么想法吗?

【问题讨论】:

变量的类型是什么?我猜它是一个整数。对吗? 【参考方案1】:

试试

Select
    AVG(Cast(variable as Float)),
    SUM(variable)
From
    Table

【讨论】:

我建议使用十进制而不是浮点数。看到这个:***.com/questions/1056323/… @PouyaBCD 在不知道确切的用例的情况下,您不能只建议使用小数而不是浮点数。存在完全有效的浮点数/双精度用例,其中使用小数时效果不佳(例如,当您需要大范围时,例如从 1e-18 到 1e+18 的数字)。

以上是关于Sql中的AVG - 浮点数问题的主要内容,如果未能解决你的问题,请参考以下文章

为啥 SQL 浮点数与 C# 浮点数不同

SQL AVG 返回一个 int

RODBC 将浮点数作为 SQL Server 中的字符

浮点数的 SQL 分组精度

如何从 PySpark 中的向量列中提取浮点数?

如何将具有十进制值的数字转换为PL / SQL中的浮点数?