私はこのコードを持っています。変な奇妙な(浮動小数点のような)
static int test = 100;
static int Test
{
get
{
return (int)(test * 0.01f);
}
}
出力は次のとおりです。0
しかし、このコードは
static int test = 100;
static int Test
{
get
{
var y = (test * 0.01f);
return (int)y;
}
}
異なるを返す出力は、次のとおりです:1
また、私は、このコード
static int test = 100;
static int Test
{
get
{
return (int)(100 * 0.01f);
}
}
出力されてい1
私はILの出力を見て、私はなぜC#がコンパイル時にこの数学的演算を行い、出力が異なるのか理解していませんか?
この2つのコードの違いは何ですか?なぜ私は変数の結果を使用することを決めた変更ですか?
どのように値を確認しますか? – dotctor
[浮動小数点数学は壊れていますか?](http://stackoverflow.com/questions/588004/is-floating-point-math-broken) – Liam
私はそれを見ていましたが、正確な答え。しかし、この答えは、ビットをクリアすることがあります:http://stackoverflow.com/a/15117741/2594485 –