回答

收藏

在SQL中舍入到n个有效数字

技术问答 技术问答 506 人阅读 | 0 人回复 | 2023-09-14

我希望能够在SQL中将数字四舍五入为n个有效数字。所以:" t& L( d- J1 X. e
123.456 rounded to 2sf would give 120
  B  _- C* _$ R! p0.00123 rounded to 2sf would give 0.0012
$ y% D  `4 ~, m8 C我知道ROUND()函数可以四舍五入到小数点后n位而不是有效数字。
5 A& m& I5 x! Q8 E* ]4 L                % W! r0 C$ H, M/ L4 a/ |+ X1 I
解决方案:
0 Q! J; G) Y7 f6 K                8 h: U2 D5 i8 g! O0 j
* }' q5 u9 f5 ^  ?- s
/ j9 e5 I& G! w( b, h
                select round(@number,@sf-1- floor(log10(abs(@number)))) 应该做的把戏!. E& A  @& M$ q5 `& ]- V# z
成功测试了您的两个示例。
. d$ S: g4 n, q5 o0 E+ B编辑:在@ number = 0上调用此函数将不起作用。在使用此代码之前,您应该为此添加一个测试。
( f& z2 x  {2 {* O9 Hcreate function sfround(@number float, @sf int) returns float as
+ H/ h$ k' I9 E7 b  _begin
2 Z. o1 }7 g  j& q2 z: w    declare @r float5 Q" q+ B2 _; v& i3 N# ]
    select @r = case when @number = 0 then 0 else round(@number ,@sf -1-floor(log10(abs(@number )))) end% Q5 i3 @8 p! V4 P. ^
    return (@r)
+ Q/ z6 L( o0 T$ _# B* Dend
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则