Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 双变量会产生意外的结果_C#_Variables - Fatal编程技术网

C# 双变量会产生意外的结果

C# 双变量会产生意外的结果,c#,variables,C#,Variables,我不确定这两个变量是怎么回事。“milliV”是双精度,“param1a”是双精度,param1a=65,我应该得到1.588。我得到的结果是=0。这怎么可能 double milliV=0.0; milliV= (5/1023*param1a/200*1000); 因为5/1023是整数除法,所以结果也是整数。试试这个 milliV= (5.0/1023*param1a/200.0*1000); 只要操作的一个元素是double,结果也将是double5/1023是问题5,1023

我不确定这两个变量是怎么回事。“milliV”是双精度,“param1a”是双精度,param1a=65,我应该得到1.588。我得到的结果是=0。这怎么可能

  double milliV=0.0;
  milliV= (5/1023*param1a/200*1000);

因为
5/1023
是整数除法,所以结果也是整数。试试这个

milliV= (5.0/1023*param1a/200.0*1000);

只要操作的一个元素是
double
,结果也将是
double

5/1023是问题5,1023是整数,因此5/1023=0

看起来5/1023=0,因为5和1023都是整数

尝试将5/1023*param1a/200*1000更改为

5.0 / 1023.0 * param1a / 200.0 * 1000.0

什么类型是
param1a
?可能需要尝试
5.0/1023.0
200.0*1000.0
,这样您就可以确保没有在其中混合一些整数结果。正如我所说,这是@doctorlove的双精度。可能重复@doctorlove:编译器可能会发出警告,表示包含变量的表达式具有常量结果。(我不能再向C#编译器添加此警告,但我会检查Coverity的C#checker是否会捕捉到此警告。)@Nobody女士:这发生在我们所有人身上,特别是当Jon Skeet回答时;)