Sql Server Decimal(30,10)丢失最后2位小数
发布时间:2021-01-17 22:30:52 所属栏目:MsSql教程 来源:网络整理
导读:当在Sql Server 05中划分2个十进制(30,10)数字时,2个最后的小数似乎丢失(甚至没有舍入,只是截断). 例如: Declare @x decimal(30,10)Declare @y decimal(30,10)Declare @z decimal(30,10)select @x = 2.1277164747 select @y = 4.8553794574Select @z = @y
当在Sql Server 05中划分2个十进制(30,10)数字时,2个最后的小数似乎丢失(甚至没有舍入,只是截断). 例如: Declare @x decimal(30,10) Declare @y decimal(30,10) Declare @z decimal(30,10) select @x = 2.1277164747 select @y = 4.8553794574 Select @z = @y/@x select @z 结果:2.2819673100 但是,如果将2个被分割的数字转换为浮点数似乎有效: .... Select @z = cast(@y as float)/cast(@x as float) select @z 结果:2.2819673181 为什么Sql这样做?什么是在不失去Sql精度的情况下划分小数的正确方法. 解决方法SQL Server中允许的最大精度为38.您使用的是十进制(30,10).最大值为99,999,999.9999999999如果将此数字除以0.000000001,最终会得到一个更大的数字,因此生成的数据类型必须能够容纳它.这会导致您失去一些精确度.将原始数据类型更改为十进制(20,10),并且不会出现此问题. 有关数据类型的完整规则(以及它们如何受数学运算影响): Full rules here (编辑:淮北站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 软件业亟待突破“测试”瓶颈 三大原因滞后发展
- sql-server – 如何在恢复中停止,脱机和删除SQL Server数据
- 在ASP.NET 2.0中操作数据之四十四:DataList和Repeater数据
- sql – 在sybase Server中提取SP和DDL脚本
- sql-server – SQL Server PDF全文搜索无法在FileStream PD
- 什么SQL查询或视图将显示“动态列”
- 紧急病毒警报:“秋天的童话”借9.18发威
- Mandrake Linux9.2发布 64位版本即将放出
- sql-server – 我应该在所有触发器上添加SET NOCOUNT吗?
- SqlServer表连接怎么运用?四种连接实例详解
站长推荐
热点阅读