c#中的奇怪结果

时间:2013-12-19 10:34:04

标签: c#

我的问题太奇怪,简短:

double a = 1 / 2;
MessageBox.Show(a.ToString());

显示0 我尝试使用decimalfloat,但始终是0

4 个答案:

答案 0 :(得分:11)

你需要写:

double a= 1 / 2.0d;

int划分为int编译器生成int结果,将其分配给double

和写作一样:

 int resultInt = 1/2;
 double a = resultInt;

通过在您的操作2.0d中指定,您明确表示您打算在分配后生成double

答案 1 :(得分:5)

正在整数算术中执行除法,这意味着在将结果分配给double类型之前,您将失去精度

将其中一个文字提升为double以强制在浮点中执行计算。即写

double a = 1.0 / 2;

答案 2 :(得分:4)

12都被视为整数常量。在int转换为int之前,int除以double的结果是另一个d。通过用double a = 1d/2d; 后缀或提供小数点,向编译器指出至少有一个常量是double。

e.g。

{{1}}

答案 3 :(得分:2)

试试这个:

double a =(double)1 /(double)2;

此致