zoukankan      html  css  js  c++  java
  • sql 下,float和numeric

    搜了下两者的区别,答案其实很明显:

    numeric支持最长38位长度的数字,只有在你要的数字的长度超过38位时才推荐使用float

    原因是,float在保存和提取,以及数学计算等方面,会产生于期待记过不一致的情况。

    为什么呢?

    因为float和real,保存的是一种近似值,而非准确值。比如,向float列中保存一个数,3.8,存完之后有可能变成3.7999999或者3.80000124

    或者,存入2390.006529380733,变为2390.00652938073。少一位

    但是float参与的浮点计算,确实有很大问题。

    具体表现为,莫名其妙的自动保留不确定的有效小数位数。而且这种情况经常只在第一次计算时出现,时对时错。很不稳定

    这个问题,我用numeric时也时有发生。所以现在比较困惑float到底该不该用。

    而real参与的数学运算,问题最大,大多数情况结果都是错的:

    0.165970772443(numeric)+0.1659708(real)=0.3319415

    0.1659708(real)+0.165970772443(float)=0.331941544947806

    总之,在float和real参与的计算和存取操作中,都会有莫名其妙的增减小数位的现象。

    numeric虽然我也碰到过这种问题,但是几率相当小。

    不喜欢用numeric的地方是,它会在小数位上保留无效的0,来占满设定的小数位数,而这点上,float会自动去除无效的0.看起来要清晰,转换成varchar时也不会看起来别扭。

  • 相关阅读:
    前端了解即可:postman(接口测试)的使用
    ES6——TDZ(暂时性死区)
    Centos自动安装openssh及openssl脚本并隐藏版本号
    ELK学习链接
    Centos7 中使用搭建devpi并且使用Supervisor守护进程
    ansible系列
    iperf3网络测试工具
    Centos6.9下PXE安装centos 7
    CentOS 6.9下PXE+Kickstart无人值守安装操作系统
    django学习篇
  • 原文地址:https://www.cnblogs.com/yyjj/p/3723535.html
Copyright © 2011-2022 走看看