[英]Dividing Math with C#
这有一个可能很简单的答案,但我无法弄清楚 -
double Result = 1 / 12;
返回0,而
double Result2 = 24 / 12;
返回2
发生了什么,我该如何解决?
尝试这个:
double Result = 1 / (double)12;
或这个:
double Result = 1 / 12D;
在C#(以及许多其他语言)中,整数除法返回一个整数。 通过将其中一个操作数强制转换为double
或显式声明文字double
,可以强制除法表达式返回一个double
精度数而不是在小数位后截断。
它正在进行整数数学,因为右边的数字被计算为整数。
试试1.0/12
;
我认为你需要投射你的价值观
double Result = (double)1 / (double)12
与基于整数的数学有关,总是返回一个整数.....
这也会奏效
Decimal.Divide(1, 12)
它具有更高精度的结果,但范围更小。
问题是1
和12
是整数( int
类型,而不是double
)。 这意味着值忽略小数点以外的任何值。 当你将1除以12时,得到0.083。 由于小数点后面的任何内容都被截断为int
,因此保留为0
。
要获得预期的结果,您的一个操作数必须是double
类型。 您可以通过将1
更改为1.0
或12更改为12.0
(或两者,只要至少有一个操作数是double
精度数)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.