2016-03-29 13 views
-2

今日、CEILING()のバグが見つかりました。どうしてか分かりません。CEILING()で何が起こったのですか?

私に答えを与えることができる人、pls。

ありがとうございました。

私はCEILING()SQL Server 2012のテストする場合:

enter image description here

+7

あなたはFLOATを使用しています。フロートはおおよその値です。 10進数に変更して試してみてください – Squirrel

+0

これは、あなたがバグを犯す可能性があります。私たちは何を見ているのですか?あなたはどこにエラーがあると思いますか?あなたは正しい価値があると思いますか? – TomTom

+0

[浮動小数点演算は壊れていますか?](http://stackoverflow.com/questions/588004/is-floating-point-math-broken) – AakashM

答えて

4

を。これは、それ自体がバグではありません。浮動小数点は、2の(負の)べき乗の有限の和として表すことができないので、0.17を正確に表すことはできません。したがって、0.17は最も近い表現可能な数で表されます。

結果として0.17は実際には0.170000...1のように表されます。したがって、CEILINGを実行すると、1701と表示されます。

@Squirrelによると、DECIMALには、指定された桁数の数字が正確に格納されています。

関連する問題