繁体   English   中英

用C#划分数学

[英]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)

它具有更高精度的结果,但范围更小。

问题是112是整数( int类型,而不是double )。 这意味着值忽略小数点以外的任何值。 当你将1除以12时,得到0.083。 由于小数点后面的任何内容都被截断为int ,因此保留为0

要获得预期的结果,您的一个操作数必须是double类型。 您可以通过将1更改为1.0或12更改为12.0 (或两者,只要至少有一个操作数是double精度数)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM