数据库单元格值的计算
本文关键字:计算 单元格 数据库 | 更新日期: 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)
我确实假设fieldA
和fieldB
是整数?如果是的话,你应该意识到,无论方程左边是什么,除以两个整数也会得到一个整数。
因此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