1

Math.Roundメソッドを呼び出すと、「あいまいな呼び出し」コンパイラエラーが発生する理由について少し混乱しています。

これが私の問題のあるコードです:

Math.Round((2000-((Splots[x].RawMin/4095)*2000))+200);

RawMinはInt32データ型です。

RoundメソッドはInt32値型で返されるはずだと思いました。

ヒントや手がかりは大歓迎です。ありがとう、

4

1 に答える 1

2

のオーバーロード リストを見てくださいMath.Round。単一のパラメーターを取る 2 つのメソッドがあります。

double Round(double d)
decimal Round(decimal d)

どちらも引数を指定して呼び出された場合に適用できますが、すでに丸められているため、開始するintのに しかない場合にメソッドを呼び出すのは無意味です。int

たとえば、算術演算で除算演算を実行すると、他の演算に伝播するなど、実際に算術演算の方法を変更したいと思われます。double

// Note the 4095.0 to make it a double
Math.Round((2000-((Splots[x].RawMin/4095.0)*2000))+200);

それがなければ、すべての操作で整数演算が使用されますが、これはほぼ確実に望んでいたものではありません。

ただし、結果をキャストする必要がありintます。の範囲は と の両方の範囲を超えdoubleているため、 の戻り値の型はです。この場合、計算が与えられれば、結果が適切な範囲になることが「わかっています」。intlongMath.Round(double)double

于 2012-07-17T13:35:45.727 に答える