开发者社区 > 大数据与机器学习 > 实时数仓 Hologres > 正文

Hologres为啥我用sum函数应该是86.24,为啥出现86.24000000000001?

Hologres为啥我用sum函数应该是86.24,为啥出现86.24000000000001?image.png

展开
收起
真的很搞笑 2024-01-04 09:57:41 103 0
4 条回答
写回答
取消 提交回答
  • 这是因为浮点数在计算机中的表示方式导致的。计算机使用二进制来表示浮点数,而有些十进制小数无法精确地用二进制表示,因此会出现精度损失的情况。

    例如,对于0.1这个十进制小数,它的二进制表示为无限循环小数0.0001100110011...,因此在计算机中存储时只能截取一定的位数进行近似表示,这样就会导致精度损失。

    因此,在使用sum函数计算浮点数时,可能会出现类似86.24000000000001这样的情况,这是由于精度损失导致的。如果需要更精确的结果,可以使用decimal类型或者对结果进行四舍五入等处理。

    2024-01-06 11:42:57
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    这是因为计算机在处理浮点数时存在精度问题。在计算机中,浮点数是以二进制形式存储的,而某些十进制小数无法精确地用二进制表示,因此会出现精度误差。当你使用sum函数计算结果时,可能会出现类似86.24000000000001这样的情况。

    为了解决这个问题,你可以将结果四舍五入到指定的小数位数,例如使用ROUND函数将结果保留两位小数:

    SELECT ROUND(SUM(column_name), 2) FROM table_name;
    

    这样,你就可以得到一个更精确的结果,即86.24。

    2024-01-04 17:21:42
    赞同 展开评论 打赏
  • Explain Analyze看下是不是 sum 返回值类型精度问题导致的,如果是这个问题可以看下 sum 外边强转看看 ,此回答整理自钉群“实时数仓Hologres交流群”

    2024-01-04 11:54:26
    赞同 展开评论 打赏
  • 你遇到的问题可能是由于浮点数运算的精度问题导致的。在计算机中,浮点数(如双精度浮点数)是以二进制的形式存储的,因此在进行浮点数运算时可能会引入微小的误差。

    当你在Hologres中使用SUM函数时,计算的结果可能以不同的方式显示,这取决于数据库的配置和所使用的客户端工具。有时,这些微小的误差可能会导致显示的结果与预期略有不同。

    要解决这个问题,你可以尝试以下几个方法:
    1.使用ROUND函数:你可以使用ROUND函数将结果四舍五入到适当的小数位,以确保显示的值与预期相符。例如:

    SELECT ROUND(SUM(your_column), 2) FROM your_table;
    

    这将把结果四舍五入到小数点后两位。
    2.检查数据库的精度设置:某些数据库允许你配置浮点数的显示精度。你可以检查Hologres的配置文件或相关设置,确保显示的精度与你的需求相匹配。
    3.比较实际值:如果可能的话,比较计算的实际值与显示值之间的差异。有时,这些微小的差异可能不会影响实际业务逻辑或计算结果,因此在实际应用中可能不需要过于关注。

    2024-01-04 10:40:44
    赞同 展开评论 打赏

本技术圈将为大家分析有关阿里云产品Hologres的最新产品动态、技术解读等,也欢迎大家加入钉钉群--实时数仓Hologres交流群32314975

相关产品

  • 实时数仓 Hologres
  • 相关电子书

    更多
    实时数仓Workshop(广州站)- 李佳林 立即下载
    阿里云实时数仓Hologres技术揭秘2.0 立即下载
    实时数仓Hologres技术实战一本通2.0版(下) 立即下载