我在SQL Server中有一个视图,类似于以下内容:
select 6.71/3.41 as NewNumber
结果为1.967741
(注意6位小数)-〉decimal (38,6)
我在计算器中尝试了同样的操作,但结果是1.967741935483871xxxx
我想强制SQL Server返回更准确的结果,例如decimal(38,16)
我尝试了强制转换等显而易见的方法,但SQL Server并未改善输出,只是在末尾得到一些尾随零,例如1.9677410000
是否有办法强制SQL Server不截断结果或给予更准确的结果?
4条答案
按热度按时间cyej8jka1#
如果你想要类似
decimal(38,16)
的东西,那么你需要转换输入,而不是在截断发生后的输出!返回
检查数据类型
返回
编辑
这只是添加一个额外的链接作为后续的评论。规则
decimal
到decimal
转换are described in BOL。该链接包括以下短语但是没有详细说明如何执行这种截断。This is documented here。
8cdiaqws2#
这是一个小的变通办法,但我认为这是值得注意的。
此查询:
退货:
isr3a4wc3#
字面量6.71被视为一个具有固定精度的
numeric
,因为你在做除法,所以你改变了小数位数,当精度是最重要的时候,你不想使用小数位数,如果你想把你的数字当作是精确的,您需要将查询中的分母转换为精度更高的decimal
数据类型。这应该对您有效:vlju58qv4#
以下是包含小数点的简单方法:-
但我还是找不到去掉零的方法