-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
これは丸めの仕組みではありません。 http://math.stackexchange.com/questions/3448/rules-for-rounding-positive-and-negative-numbers – EarlOfEnnui
オーバーフローに行く...丸める方法を教えてください:) – Jeremy
数学的にどの部分が正しくないと思いますか? – Paparazzi