数据库单元格值的计算

本文关键字:计算 单元格 数据库 | 更新日期: 2023-09-27 18:20:22

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

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

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

那么这里的问题是什么呢?谢谢

数据库单元格值的计算

当执行fieldA / (fieldA+fieldB)时,得到5/10,作为一个整数,它被截断为0,如果想要0.5作为结果,则必须执行二重除法。例如:

double percentage = (double)fieldA/(fieldA+fieldB)

我确实假设fieldAfieldB是整数?如果是的话,你应该意识到,无论方程左边是什么,除以两个整数也会得到一个整数。

因此CCD_ 4除以CCD_;1,结果为零。请参阅维基百科上的整数除法。

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

double percentage = fieldA/(double)(fieldA+fieldB)

由于字段A和字段B是整数,表达式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);

在应用操作

之前,您可能需要将字段强制转换为双精度字段

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

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

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

答案:结果=50.0