zoukankan      html  css  js  c++  java
  • SQL Server 中使用数据类型表示小数

    在使用的时候发现一个问题,由于编程的习惯,当数据库中需要存储小数的时候,就想当然的使用了float类型,可结果太让人意外了。

    数据库中存储了0.5没问题,当使用0.6的时候,得到的确是0.59999999999999998,使用1.6得到的是 1.6000000000000001,0.3得到的是0.29999999999999999,很奇怪啊!

    在查找之后才明白原因,在SQL Server的帮助中这样描述:

    小数数据
    Decimal 数据包含存储在最小有效数上的数据。在 SQL Server中,小数数据使用 decimal 或 numeric 数据类型存储。存储 decimal 或 numeric 数值所需的字节数取决于该数据的数字总数和小数点右边的小数位数。例如,存储数值 19283.29383 比存储 1.1 需要更多的字节。

    在 SQL Server中,numeric 数据类型等价于 decimal 数据类型。

    近似数字数据
    近似数字(浮点)数据包括按二进制计数系统所能提供的最大精度保留的数据。在 SQL Server 中,近似数字数据以 float 和 real 数据类型存储。例如,分数 1/3 表示成小数形式为 0.333333(循环小数),该数字不能以近似小数数据精确表示。因此,从 SQL Server 获取的值可能并不准确代表存储在列中的原始数据。又如,以 .3, .6, .7 结尾的浮点数均为数字近似值。

    下图是各数据类型表示同一个小数的测试结果:

  • 相关阅读:
    基于802.11Fuzz技术的研究
    mips体系堆栈回溯分析与实现
    MIPS架构上函数调用过程的堆栈和栈帧
    IDA Pro使用技巧
    工控安全入门分析
    工控安全入门之Ethernet/IP
    使用PLC作为payload/shellcode分发系统
    qemu基本使用
    IDA Pro使用(静态分析+动态调试)
    逆向安全基础之IDA使用简介
  • 原文地址:https://www.cnblogs.com/feiyuhuo/p/5981628.html
Copyright © 2011-2022 走看看