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#(以及许多其他语言)中,整数除法返回一个整数。通过将操作数之一转换为double或显式声明文字double,您可以强制除法表达式返回 adouble并且不截断小数位后。

于 2012-05-30T21:51:40.880 回答
3

它正在做整数数学,因为右边的数字被评估为整数。

试试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

问题在于1and12是整数(类型为int,而不是double)。这意味着这些值会忽略小数点之后的任何内容。当你将 1 除以 12 时,你得到 0.083。由于小数点后的任何内容都将被截断int,因此您只剩下0.

要获得预期的结果,您的操作数之一必须是 type double。您可以通过更改11.0或 12 来做到这一点12.0(或两者,只要至少一个操作数是 a double)。

于 2012-05-30T21:57:44.633 回答