我正在使用SQL Server 2008 R2,我想找到具有特定小数点的向上和向下舍入值,如下所示:
例如:
如果我的值 1.27845 ,我想要2位小数的答案,那么我的回答应该是
如果我的值 33.33333 ,我想要2位小数的答案,那么我的答案应该是
如果我的值 1.27845 ,我想要3位小数的答案,那么我的回答应该是
如果我的值 33.33333 ,我希望答案有3位小数,那么我的答案应该是
我想要所有案例的共同解决方案。 感谢...
答案 0 :(得分:1)
您可以将以下“偏移量”与FLOOR和CEILING一起使用
DECLARE
@digit int = 2,
@value decimal(10,5)=1.27845
DECLARE
@calc_scale int = POWER(10,@digit)
SELECT
CAST(FLOOR (@value * @calc_scale)/@calc_scale AS DECIMAL(10,5)) as down,
CAST(CEILING (@value * @calc_scale)/@calc_scale AS DECIMAL(10,5)) as up
但是,目标数据类型将始终与查询中指定的一样(例如,精度编辑:上例中的比例为5)。
您无法动态更改输出中的位数,因为此比例取决于变量的数据类型。您可以将转换为VARCHAR数据类型并修剪不需要的数字,但我强烈反对它。
如果您只需显示大量数字,我建议在应用层修剪它。
答案 1 :(得分:0)
我无法添加我的代码继续收到此错误"提交答案时发生错误"所以添加为图片