は
(int)(int1 / (float)var2.Count() * 100)
に相当
(int)((int1 / (float)var2.Count()) * 100)
...そして、浮動小数点または整数除算を使用しますか?
編集...上記の答えが「はい」の場合、ここで浮動小数点除算を実行する利点は何ですか?
は
(int)(int1 / (float)var2.Count() * 100)
に相当
(int)((int1 / (float)var2.Count()) * 100)
...そして、浮動小数点または整数除算を使用しますか?
編集...上記の答えが「はい」の場合、ここで浮動小数点除算を実行する利点は何ですか?
/
§7.2.1 の下で*
は、同じ演算子の優先順位を持つため、2 つの結果は同じになるはずです (float
ルールを使用)。
しかし、私は優先順位表を学ぶことを気にすることはできません。ブラケットだけ使ってます。次に、覚える必要なく、どの言語でも機能します。
もう 1 つの重要な質問は、最終的な(int)
キャストの四捨五入です。「上」、「下」、または「バンカー」のどれになると予想しますか?
優先順位の規則は覚えるのが本当に面倒なので、私も括弧を使ってあいまいさをなくすことを好みます。私は、「最初に人のためにコードを書き、次にコンピュータのためにコードを書く」というアドバイスに従うようにしています。しかし、ルール (の一部) を覚えるための興味深いニーモニック (Bruce Eckel の本から学んだこと) があります。
Ulcer - Unary (+, -, ++, --, !)
Addicts - Arithmetic (and shift) (+, -, *, /, %, <<, >>)
Really - Relational (<, >, ==, <=, >=, !=)
Like - Logical (and bitwise) (&&, ||, &, |, ^)
C - Conditional ( ? : ) <- this is the conditional ternary operator
A lot - Assignment ( =, *=, +=, ...)
完璧ではありません。ビット単位の演算子が押し込まれ、乗算演算子 (*、/、%) が加算演算子 (+、-) よりも優先されることを知っておく必要があります。
それらは同等であり、浮動小数点除算を使用します。乗算が最初に行われたとしても、int は float*int の結果である float で除算されるため、浮動小数点除算が使用されます。
編集:
上記の答えが「はい」の場合、ここで浮動小数点除算を実行する利点は何ですか?
それは利点ですか?結果が異なるため、最初に考慮すべきことは、それが正しいかどうかです。コードから判断すると、パーセンテージを計算しようとしているようです。整数除算を使用する場合、"int1" が常に var2.Count() よりも小さい場合、結果は常に 0 になり、これは望ましくない可能性があります。
C# 言語仕様:演算子の優先順位と結合性を参照してください。
はい、除算と乗算は左から右に行う必要があります。したがって、それはフロート除算です。
PS:可能な限り置き換えてくださいfloat
。 double
それは同じだ。どちらも float 除算を使用します。
はい、どちらも同等です。
どちらも浮動小数点除算を使用します。
整数除算は答えの全体のみを返します。つまり、3/2 は 1 になりますが、浮動小数点除算は 1.5 になります。