回 帖 发 新 帖 刷新版面

主题:一个类型转换的问题!请大家帮忙!

本人最近在单位因为工作需要开发了一个远程SQL数据库查询软件,现在基本功能和界面都做好了,就是还有一个数据类型问题一直困扰着我。
在数据库里某张表内,有一个单位1-12月份的收入支出数,系统是保留2位小数的,也就是精确到了0.01元,我用C++BUILD的StringGrid组件来显示提取出来的数据,在最下面的一行,进行合计,
显示某行时我直接使用数据表的变量值输出,
StringGrid1->Cells[x][y]=Table1->Fields[x]->Value;
这时候数据在表格里显示都正常,

但是汇总这些数据时出了问题,因为有小数,所以我定义了一个float型的变量,然后用一个循环来计算合计数,

float count;
for(i=0;i<Table1->Fieldcount;i++)
count=count+Table1->Fields[i]->Value;

但是计算完后,变量count总会莫名其妙也会多出一些小数,有时到了小数点后4,5位,而且和正确的合计数相差0.0几,不知道是为什么,我使用格式化数字输出,还是结果不正确。

请问大家这是为什么呢,应该如何解决?

回复列表 (共2个回复)

沙发

数据 count 及 Table1->Fields[i]->Value 的数据类型都换成 double 试试看。

板凳

楼上的是正解,在C++buidl里面,float类型的确计数不准确,是因为内存刷新的原因,所以会自动出现0.00以后的小数,导致数据不准确,改为 double后,问题解决.

我来回复

您尚未登录,请登录后再回复。点此登录或注册