我有一个包含表的数据库,包含两个整数字段。
当我尝试获得百分比(fieldA /(fieldA + fieldB))时,该值为0.
double percentage = fieldA+fieldB // WORKS; 5+5=10
double percentage = fieldA / (fieldA+fieldB) // DOES NOT WORK; 5+5=0
那么这里的问题是什么?感谢..
答案 0 :(得分:2)
我认为fieldA
和fieldB
是整数吗?如果是,你应该知道,除了方程左边的内容之外,除以两个整数也会得到一个整数。
因此将fieldA
除以(fieldA+fieldB)
会产生一个值< 1导致零。请参阅维基百科上的Integer Division。
要解决此问题,只需将至少一个操作数转换为浮点类型,例如:
double percentage = fieldA/(double)(fieldA+fieldB)
答案 1 :(得分:2)
当你执行fieldA / (fieldA+fieldB)
时,得到5/10,如果整数被截断为0,如果你想要0.5,那么你必须进行双重除法。
就像这样:
double percentage = (double)fieldA/(fieldA+fieldB)
答案 2 :(得分:2)
由于fieldA和fieldB是整数,因此表达式fieldA / (fieldA+fieldB)
的格式为int / int
,这意味着您将使用整数除法,在本例中为5/10 = 0
,因为整数除法求解{{ 1}},在这种情况下x = am + b
表示5 = a*10 + b
你可以这样做:
a = 0, b = 5
答案 3 :(得分:1)
在应用操作之前,您可能需要将字段转换为双精度
答案 4 :(得分:1)
试试这个:double percentage =(double)fieldA /(double)(fieldA + fieldB)
答案 5 :(得分:1)
如果两个字段都是整数,那么添加两个整数结果也是整数。 试试这个
float result =(float)((A * 100)/(B + A));
答案:结果= 50.0