博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL Server 中使用数据类型表示小数
阅读量:6962 次
发布时间:2019-06-27

本文共 694 字,大约阅读时间需要 2 分钟。

在使用的时候发现一个问题,由于编程的习惯,当数据库中需要存储小数的时候,就想当然的使用了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 结尾的浮点数均为数字近似值。

 

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

转载于:https://www.cnblogs.com/feiyuhuo/p/5981628.html

你可能感兴趣的文章
【实战】Docker入门实践二:Docker服务基本操作 和 测试Hello World
查看>>
新手应该搞明白的java知识
查看>>
全文搜索引擎 ElasticSearch
查看>>
ireport+springMVC生成pdf
查看>>
TCP连接建立(三次握手)
查看>>
Fatal error: Can’t open and lock privilege tables: Table ‘mysql.host’ doesn’t exist 的解决方法...
查看>>
我的友情链接
查看>>
html生成pdf
查看>>
项目进度管理与项目陈本管理
查看>>
LinearLayout的隐藏与显示
查看>>
Android studio使用自定义的格式化文件或者eclipse的格式文件
查看>>
sublime px dp vw换算rem
查看>>
NYOJ 16 矩形嵌套(动态规划)
查看>>
eclipse导入tomcat 8.0x源码
查看>>
shell脚本——爬取域名一级页面元素并判断其可缓存性
查看>>
Linux平台下代理服务器的实现(squid)
查看>>
简单的tab切换
查看>>
yii中文显示
查看>>
四层和七层负载均衡
查看>>
2016清单
查看>>