tongchenkeji 发表于:2023-12-10 15:13:480次点击 已关注取消关注 关注 私信 大数据计算MaxComputeDouble 类型的做个计算精度也会有问题,不使用CAST的话?[阿里云] 暂停朗读为您朗读 大数据计算MaxComputeDouble 类型的做个计算精度也会有问题,不使用CAST的话? 「点点赞赏,手留余香」 赞赏 还没有人赞赏,快来当第一个赞赏的人吧! 海报 阿里云# 云原生大数据计算服务 MaxCompute3255# 大数据1264
小周sirAM 2023-12-21 8:11:53 1 确实,使用MaxCompute的DOUBLE类型进行计算时,由于其8字节双精度浮点数的特性,存在一定的精度损失。例如,4.515的DOUBLE类型在表示结果时为4.514999999,因此在做四舍五入操作时会被计算为4.51。因此,如果您对计算精度有较高要求,建议将DOUBLE数据类型转换为DECIMAL类型进行计算。 值得注意的是,当MaxCompute项目打开2.0新数据类型开关时,部分隐式类型转换会被禁用,包括STRING转换为BIGINT、STRING转换为DATETIME、DOUBLE转换为BIGINT、DECIMAL转换为DOUBLE、DECIMAL转换为BIGINT等,这些操作都有可能导致精度损失或报错。所以对于涉及精度计算的任务,应尽可能避免这些可能出现问题的转换操作。
xin在这AM 2023-12-21 8:11:53 2 double类型会有精度问题存在,可以cast转成decimal来使用。可以参考下这篇文档https://help.aliyun.com/zh/maxcompute/use-cases/fix-the-precision-issue-of-the-round-function?spm=a2c4g.11186623.0.i27 ,此回答整理自钉群“MaxCompute开发者社区2群”
确实,使用MaxCompute的DOUBLE类型进行计算时,由于其8字节双精度浮点数的特性,存在一定的精度损失。例如,4.515的DOUBLE类型在表示结果时为4.514999999,因此在做四舍五入操作时会被计算为4.51。因此,如果您对计算精度有较高要求,建议将DOUBLE数据类型转换为DECIMAL类型进行计算。
值得注意的是,当MaxCompute项目打开2.0新数据类型开关时,部分隐式类型转换会被禁用,包括STRING转换为BIGINT、STRING转换为DATETIME、DOUBLE转换为BIGINT、DECIMAL转换为DOUBLE、DECIMAL转换为BIGINT等,这些操作都有可能导致精度损失或报错。所以对于涉及精度计算的任务,应尽可能避免这些可能出现问题的转换操作。
double类型会有精度问题存在,可以cast转成decimal来使用。可以参考下这篇文档
https://help.aliyun.com/zh/maxcompute/use-cases/fix-the-precision-issue-of-the-round-function?spm=a2c4g.11186623.0.i27 ,此回答整理自钉群“MaxCompute开发者社区2群”