これには潜在的に簡単な答えがありますが、私はそれを理解できません-
double Result = 1 / 12;
0 を返しますが、
double Result2 = 24 / 12;
リターン 2
どうすれば修正できますか?
これを試して:
double Result = 1 / (double)12;
またはこれ:
double Result = 1 / 12D;
C# (および他の多くの言語) では、整数除算は整数を返します。オペランドの 1 つをdoubleリテラルにキャストするか明示的に宣言するdoubleことにより、除算式が a を返すようdoubleにし、小数点以下を切り捨てないようにすることができます。
it is doing integer math because the numbers on the right are evaluated as integers.
try 1.0/12;
あなたの価値観をキャストする必要があると思います
double Result = (double)1 / (double)12
整数ベースの数学と関係があり、常に整数を返します.....
これもうまくいきます
Decimal.Divide(1, 12)
より精度の高い結果が得られますが、範囲は狭くなります。
問題は、1と12が整数 (型intではなくdouble) であることです。これは、値が小数点以下を無視することを意味します。1 を 12 で割ると 0.083 になります。の場合、小数点以下は切り捨てられるためint、 が残ります0。
期待される結果を得るには、オペランドの 1 つが type である必要がありますdouble。これを行うには、 にまたは 12 を に(またはオペランドの少なくとも 1 つが a である限り、両方) に変更1します。1.012.0double