C#连接Access数据库 读取数据有误差

不知道可不可以看到大图。 使用Microsoft.Jet.OLEDB.4.0连接access数据库填入Dataset中,再绑定入dataGridView1中(如图),出库窗口中的数据,是选择dataGridView1的一行后,将数据存入一个数组中,窗口红圈中的数是从那个数组中读取的。一开始很正常,出入库使用update [inventory] set [数量] = [数量] +(或者-)【输入的数据】其中:数量使用的是access里的双精度数字类型 入库一直很正常,就是出库的时候,我测试了几个变态数,比如56.365547,或者0.0000001。之后随机就会出现上面的问题。就是一做完出库操作后,突然数量变成dataGridView1中红圈的数了,这个数不正常,显示的是:28.610999999999997但是我点开出库的窗口,则显示的就是正常的28.611,而且我打开数据库mdb文件,显示的也是28.611.请问怎么回事。

第1个回答  2020-03-20
第一:你放的红包少点。问这样细节的问题。
--------------------------------------------------------
目前所有微软产品基本对双精度的定位是:
double
±5.0
×
10−324

±1.7
×
10308
精度
:
15

16
位-----这一句很重要。
过了这个精度就要四舍五入。明白了否?
也就是说你的数据输入是:
4.999999999999999
小数位在多一个9
就变成
5,
其实这样的误差是允许的,刚好你的程序要试试这些变态数据,
还有excel
大数据
尾部编零问题,几天前回答过。那个哥们跟你一样的疑惑,其实太大太小都会失去精度,这就是
计算机数学。
不光是微软,就是别的数据库厂商也是一样的。
相似回答