3

これには潜在的に簡単な答えがありますが、私はそれを理解できません-

double Result = 1 / 12;

0 を返しますが、

double Result2 = 24 / 12;

リターン 2

どうすれば修正できますか?

4

5 に答える 5

8

これを試して:

double Result = 1 / (double)12;

またはこれ:

double Result = 1 / 12D;

C# (および他の多くの言語) では、整数除算は整数を返します。オペランドの 1 つをdoubleリテラルにキャストするか明示的に宣言するdoubleことにより、除算式が a を返すようdoubleにし、小数点以下を切り捨てないようにすることができます。

于 2012-05-30T21:51:40.880 に答える
3

it is doing integer math because the numbers on the right are evaluated as integers.

try 1.0/12;

于 2012-05-30T21:51:49.333 に答える
0

あなたの価値観をキャストする必要があると思います

double Result = (double)1 / (double)12

整数ベースの数学と関係があり、常に整数を返します.....

于 2012-05-30T21:52:10.270 に答える
0

これもうまくいきます

Decimal.Divide(1, 12)

より精度の高い結果が得られますが、範囲は狭くなります。

于 2012-05-30T21:52:59.990 に答える
0

問題は、112が整数 (型intではなくdouble) であることです。これは、値が小数点以下を無視することを意味します。1 を 12 で割ると 0.083 になります。の場合、小数点以下は切り捨てられるためint、 が残ります0

期待される結果を得るには、オペランドの 1 つが type である必要がありますdouble。これを行うには、 にまたは 12 を に(またはオペランドの少なくとも 1 つが a である限り、両方) に変更1します。1.012.0double

于 2012-05-30T21:57:44.633 に答える