2016-04-08 5 views
-3

T-SQL ROUND関数を使用すると、私は奇妙な動作に気付きました。 ROUND関数は、四捨五入される桁の右の最初の桁のみを参照するように見えます。 -6.146を1小数点まで丸めると-6.1になります。私はそれが右のように左に向かって動作するように、各桁の右と左に始まると思ったでしょう:-6.146 - > -6.15 - > -6.2T-SQLの丸め、最初はLENGTH + 2に切り詰めます

私はExcelのラウンド機能もあります。

以下のクエリは、私が何を記述しているかを示しています。私は単純にネストされたROUND関数を以下のように使用するかもしれませんが、より良い方法があり、どのアプローチが数学的に正しいと考えられるのか不思議です。

DECLARE @Num AS FLOAT 

SET @Num = -6.1463 

SELECT @Num [OriginalVal], ROUND(@Num, 1, 0) [SingleRound] 
, ROUND(ROUND(ROUND(@Num, 3, 0), 2, 0), 1, 0) [NestedRound] 

結果

OriginalVal | SingleRound | NestedRound 

-6.1463  | -6.1  | -6.2 
+3

これは丸めの仕組みではありません。 http://math.stackexchange.com/questions/3448/rules-for-rounding-positive-and-negative-numbers – EarlOfEnnui

+0

オーバーフローに行く...丸める方法を教えてください:) – Jeremy

+1

数学的にどの部分が正しくないと思いますか? – Paparazzi

答えて

関連する問題