floatもrealもいわゆる概数といわれるデータ型で、小数の保持には必ず誤差が生じます。 一方、SQL Serverにはデータ型の優先順位というものがあります。 http://msdn.microsoft.com/ja-jp/library/ms190309 … floatもrealもmoneyより上です。 したがって、float * money, real * moneyの演算を行うと、moneyはそれぞれfloat, realに変換されてから演算に使われます。 moneyで9.4と持っていたものがreal型に変換されると、結局9,4にはなりません。 おそらく9.399999389...あたりになってしまいます。realの有効桁数は7桁しかありませんから、小数点以下7桁目以降はアテにならない数字になります。 これに200を掛けても1879.999877..などとなるため、floorを掛
![データ型でFloatとreal の計算の違い?](https://cdn-ak-scissors.b.st-hatena.com/image/square/6fce719f61cb8c7b3b946056a77be497db291bb2/height=288;version=1;width=512/https%3A%2F%2Foshiete.xgoo.jp%2Fimages%2Fsp%2Fqa_recommend%2F2102_4.jpg)