C# 双变量会产生意外的结果
我不确定这两个变量是怎么回事。“milliV”是双精度,“param1a”是双精度,param1a=65,我应该得到1.588。我得到的结果是=0。这怎么可能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
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回答时;)