我的问题太奇怪,简短:
double a = 1 / 2;
MessageBox.Show(a.ToString());
显示0
我尝试使用decimal
,float
,但始终是0
答案 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)
1
和2
都被视为整数常量。在int
转换为int
之前,int
除以double
的结果是另一个d
。通过用double a = 1d/2d;
后缀或提供小数点,向编译器指出至少有一个常量是double。
e.g。
{{1}}
答案 3 :(得分:2)
试试这个:
double a =(double)1 /(double)2;
此致