質問: (0.2 +4.3+5.1+4.3+9.9+0.5+0.5) とした場合、@Valueの値は2.480000000000000e+002となっています。 この値に100を掛ける、 FLOOR(@Value)とする @Valueを100で割り戻す となぜか、 2.470000000000000e+002となってしまいます。 なぜ、値が減るのか、どうしてもわかりません。 どなたか、ご教授お願いします。
回答: 小数型データ、浮動小数型データ、および実数型データの使用.aspx)から引用します。 > > 概数型では、多くの場合、指定されたとおり正確な値が格納されません。正確な値にきわめて近い概数が格納されます。多くのアプリケーションでは指定した値と格納される概数のわずかな差は問題にはなりません。ただし、その差が問題になる場合もあります。`float` 型と `real` 型にはこのような概数の性質があるので、財務アプリケーション、丸めが行われる演算、等価性のチェックなど、正確な数値動作が必要な場合には、これらのデータ型を使用しないでください。代わりに、`int` 型、`decimal` 型、`money` 型、`smallmoney` 型を使用してください。 > > > の説明の通りで、`FLOOR`関数はもちろん丸めが行われる演算に該当します。