SQL精度问题

cfghfgskrte 2017-07-19 10:09:09
SQL为什么只能获取到小数后六位?
例如:select 1.00/3.00只能取到后六位。

SELECT cast((1.00/3.00) as decimal(10,9))这样设置后也是只能取六位,后三位被设置为0.
...全文
139 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 5 楼 cfghfgskrte 的回复:
那么为什么1.00/3.00只能取6位呢?
C语言的float,double精度问题怎么理解,这里就怎么理解
cfghfgskrte 2017-07-19
  • 打赏
  • 举报
回复
那么为什么1.00/3.00只能取6位呢?
二月十六 2017-07-19
  • 打赏
  • 举报
回复
引用 3 楼 cfghfgskrte 的回复:
这个是什么原因啊?

因为cast的是一个结果,1.00/3.00的结果是0.333333,所以cast (0.333333 as decimal(10,9)),也不会再出现后边的那些333了,因为本来cast的数都没有
SELECT (1.00/3.00)

cfghfgskrte 2017-07-19
  • 打赏
  • 举报
回复
这个是什么原因啊?
二月十六 2017-07-19
  • 打赏
  • 举报
回复
这样
SELECT cast(1.00 as decimal(10,9))/3.00

  • 打赏
  • 举报
回复
SELECT cast(1/cast(3 as decimal(10,9)) as decimal(10,9))

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧