“减少” sql十进制数据类型到最小精度和基于值的小数位数
||
我正在解决一个涉及以相当高的精度进行许多sql十进制乘法的问题。
最近的一个错误促使我进行了一些研究,并且我遇到了一篇关于小数点的精度和小数位数的令人um目结舌的文章(http://msdn.microsoft.com/en-us/library/ms190476.aspx)计算结果。
据我了解,为了避免截断或意外舍入,有时必须将操作数和可能的中间计算转换为可以起作用并提供所需结果的大小。
每个操作数都以十进制(19,5)的形式提供给我。由于我们支持如此广泛的价值观,因此我无能为力。
我的问题:是否可以将“即时”将这些十进制(19,5)值的类型减少/转换为将保留该值的最小十进制类型(精度和小数位数)?
例如,我可以在将变量(@Cw)用于乘法之前将其强制转换为十进制(4,1)“即时”吗?
DECLARE @Cw decimal(19,5)
SET @Cw = 113.5
--Some type of CAST, i.e.
--CAST(@Cw as DECIMAL(GetActualPrecision(@Cw), GetActualScale(@Cw)))
-–should show 4 instead of 19
SELECT SQL_VARIANT_PROPERTY(@NewCw, \'Precision\')
–-should show 1 instead of 5
SELECT SQL_VARIANT_PROPERTY(@NewCw, \'Scale\')
谢谢!
没有找到相关结果
已邀请:
2 个回复
疾很毋悲
师埠女