这有一个可能很简单的答案,但我无法弄清楚 -
double Result = 1 / 12;
返回 0,而
double Result2 = 24 / 12;
返回 2
发生了什么事,我该如何解决?
试试这个:
double Result = 1 / (double)12;
或这个:
double Result = 1 / 12D;
在 C#(以及许多其他语言)中,整数除法返回一个整数。通过将操作数之一转换为double
或显式声明文字double
,您可以强制除法表达式返回 adouble
并且不截断小数位后。
它正在做整数数学,因为右边的数字被评估为整数。
试试1.0/12
;
我认为你需要塑造你的价值观
double Result = (double)1 / (double)12
与基于整数的数学有关总是返回一个整数.....
这也可以
Decimal.Divide(1, 12)
它的结果精度更高,但范围更小。
问题在于1
and12
是整数(类型为int
,而不是double
)。这意味着这些值会忽略小数点之后的任何内容。当你将 1 除以 12 时,你得到 0.083。由于小数点后的任何内容都将被截断int
,因此您只剩下0
.
要获得预期的结果,您的操作数之一必须是 type double
。您可以通过更改1
为1.0
或 12 来做到这一点12.0
(或两者,只要至少一个操作数是 a double
)。