decimaL为什么不能四舍五入

weixin_38053515 2017-08-02 02:58:09
请教一个表里,有两个字段,都为decimal(38,6)数据类型的, 一个数据为0.3048,一个数据为1000 ,两数相除保留6位小数,结果应该为多少?
原先以为应该是0.000305,结果SQL出来为0.000304,不知是什么原因?

测试用例:
CREATE TABLE [T2](
[C1] [decimal](38, 6) NULL,
[C2] [decimal](38, 6) NULL,
[C3] [decimal](38, 6) NULL,
[C4] [decimal](28, 6) NULL,
[C5] [decimal](28, 6) NULL,
[C6] [decimal](28, 6) NULL
) ON [PRIMARY]

GO

INSERT INTO T2 VALUES(0.3048,1000,NULL, 0.3048,1000,NULL)

GO

UPDATE T2 SET C3=Round(C1/C2,6), C6=Round(C4/C5,6);
SELECT * FROM T2
GO

即用(38,6)与(28,6)出来的结果是不一样的,一个为0.000304,一个为0.000305。是否由于精度过高,导致的SQL计算过程中的缺陷问题,还是我理解有误?
...全文
14 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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