0

我有一个带有表的数据库,其中包含两个整数字段。

当我尝试获取百分比 (fieldA / (fieldA+fieldB)) 时,该值为 0。

double percentage = fieldA+fieldB // WORKS; 5+5=10
double percentage = fieldA / (fieldA+fieldB) // DOES NOT WORK; 5+5=0

那么这里有什么问题呢?谢谢..

4

6 回答 6

2

我确实假设fieldA并且fieldB是整数?如果是,您应该知道,将两个整数相除也会得到一个整数,无论​​等式左侧是什么。

因此,除以fieldA结果(fieldA+fieldB)为 < 1,结果为零。请参阅Wikipedia 上的整数除法

要纠正此问题,只需将至少一个操作数转换为浮点类型,例如:

double percentage = fieldA/(double)(fieldA+fieldB)
于 2012-01-16T18:32:52.340 回答
2

当你这样做时,fieldA / (fieldA+fieldB)你得到 5/10,它作为一个整数被截断为 0,如果你想要 0.5 作为结果,你必须进行双除法。即是这样的:

double percentage = (double)fieldA/(fieldA+fieldB)
于 2012-01-16T18:33:51.313 回答
2

由于 fieldA 和 fieldB 是整数,表达式fieldA / (fieldA+fieldB)的形式int / int意味着您将使用整数除法,在这种情况下 - 5/10 = 0,因为整数除法解决x = am + b了,在这种情况下5 = a*10 + b,这意味着a = 0, b = 5

但是,您可以这样做:

double percentage = (double)fieldA / (fieldA+fieldB);
于 2012-01-16T18:33:54.060 回答
1

如果两个字段都是整数,那么两个整数相加的结果也是整数。尝试这个

浮点结果 = (float)((A*100)/(B+A));

答案:结果 = 50.0

于 2012-01-16T18:47:04.207 回答
1

在应用操作之前,您可能需要将字段转换为双精度

于 2012-01-16T18:33:01.670 回答
1

试试这个:双百分比 = (double)fieldA/(double)(fieldA+fieldB)

于 2012-01-16T18:34:22.667 回答