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时也不会看起来别扭。

  • 相关阅读:
    支持向量机通俗导论(理解SVM的三层境地)
    ComponentName的意思
    图像切割之(五)活动轮廓模型之Snake模型简单介绍
    TraceView总结
    Redis:百科
    Redis:目录
    Redis: temple
    软件-操作系统-服务器:Nginx(engine X)
    软件-数学软件:Maple
    软件-数学软件:Mathematica
  • 原文地址:https://www.cnblogs.com/yyjj/p/3723535.html
Copyright © 2011-2022 走看看