zoukankan      html  css  js  c++  java
  • mysql 字符串数值计算 精度丢失

    我进行了一些测试。
    truncate(abs('414')/100,2)
    truncate('414'/100,2)
    truncate('4.14',2)
    truncate('4.1400',2)
    都有精度丢失。

    TRUNCATE(cast(ABS(字符串)/100 as decimal(15,4)) ,2)
    上述方法,ABS(字符串)/100得到的应该是double类型,cast是将double类型强制转换为了decimal类型,这个过
    程精度是保持不变的吗?
    select truncate(cast(abs('414')/100 as decimal(15,4)),2);
    测试结果是正确的4.14

    TRUNCATE(ABS(cast(字符串)as decimal(15,4))/100 ,2)
    select truncate(abs(cast('414' as decimal(15,4)) )/100 ,2);
    测试结果也是正确的4.14

    select
    truncate( -- decimal
    cast -- decimal,此处可能会损失精度
    (
    abs('414') -- double
    /100 -- double
    as decimal(15,4)
    )
    ,2
    );


    正确只是巧合。


    select
    truncate( -- decimal
    abs( -- decimal
    cast('414' as decimal(15,4)) -- decimal
    )/100, -- decimal
    2
    );


    所以用下面的方法才是对的。

  • 相关阅读:
    Yarn Client 模式
    K8S & Mesos 模式
    python_切片
    RDD执行原理
    基础编程
    python_html模板
    python_返回值
    python_机器学习_平均中位数模式
    VISIO下载+安装+第一个数据流图
    session对象
  • 原文地址:https://www.cnblogs.com/mydriverc/p/7007637.html
Copyright © 2011-2022 走看看