在对int值进行除法运算后获取0值
本文关键字:获取 运算 int 在对 除法 | 更新日期: 2023-09-27 18:02:05
我想对这两个int值进行除法,但对它们进行除法后,我只得到一个值,即0。以下是我的公式:
int RH=(A1/M1)*100(where A1=145 and M1=199)
,其中RH
的值应该是72,但我得到了0,有人能帮我吗?
以下是我的代码:
int RvalueH,RvalueV,RvalueT;
if((M1!=-1 || M1>0) && (M2!=-1 || M2>0) && (M3>0 || M3!=-1))
{
int RH = (A1 / M1);
int RV = A2 / M2;
int RT = A3 / M3;
RvalueH=RH*100;
RvalueV=100*RV;
RvalueT=100*RT;
}
老实说,对于那些试图执行整数除法的新程序员来说,这是一个常见的错误,而他们实际上打算(或至少认为(使用浮点除法。
来自/
操作员
当您将两个整数除法时,结果是始终一个整数。对于例如,7/3的结果是2。
这就是为什么当您计算145 / 199
时,结果将是0
,而不是0,728643216080402
等。
相反,将145
与100
相乘,首先和,然后将结果除以199
。由于这个仍然执行整数除法,它忽略了结果的小数部分,它将是72
而不是72,8643216080402
等
int A1 = 145, M1 = 199;
int RH = (A1 * 100) / M1; // RH will be 72
您可以重写表达式以获得非0
结果:
int RH = 100 * A1 / M1;
RvalueH = RH;
对于CCD_ 13和CCD_。
代码中的问题是RH = (A1 / M1)
将产生0
,因为它是整数除法。与100
相乘首先避免了结果变成0
。
试试这个,你需要convert
的值到float
才能得到确切的答案。
您应该将除法的返回值存储在float
变量中,以允许使用decimal points
进行编号。由于int
将不保持decimal point
之后的值。
float RvalueH,RvalueV,RvalueT;
int A1 = 145;
int M1 = 199;
float RH = (float)A1 /(float) M1;
RvalueH = RH*100;
使用double
,四舍五入为零,然后转换为int
。
例如var result = Convert.ToInt(Math.Round((double)R1/M1,0));
顺便说一下,CCD_ 28意味着它总是CCD_ 29为真。