使用Microsoft.ACE.OLEDB.12.0加载的数据表具有比Excel工作簿更高的精度

我通过System.Data.OleDb.OleDbConnection通过VB.net中的filehandler上传货币汇率工作簿。

在Excel工作表中查看费率时,我看到0.55865921787709500000
在debugging模式下查看数据表中相同的速率,我看到0.55865921787709480000

在Excel中,小数位数被设置为20 – 似乎只是填补了小数点后15位。

我试过读/写单元格到一个文本文件(相同的'500000'结果)。
试图将工作簿保存为逗号分隔的文本文件 – 结果是相同的“500000”。

费率工作表是从另一个网站创build的。 我已经尝试在工作表中添加第16位数字,但是在移出单元格之后,它会翻转为零。 我知道Excel有16位精度限制。 在这种情况下,它似乎是存储更多。

有什么方法可以查看工作簿中的实际存储值 – 除了检查数据表?

Excel保留超过15位有效数字 – 取决于创build原始Excel文档的系统。 在这种情况下,文档由Crystal Reports生成。 可以使用OLEDB连接对照Excel电子表格查看“额外”有效数字,或者通过Excel的Google Docs版本查看“额外”有效数字。
在这种情况下,我必须使SQL存储的速率与电子表格匹配。 我把每个费率转换成一个十进制和一个string。 我使用string来定位速率的周期,并开始计算小数点后出现的连续的零。 这个计数被加到十进制的十进制数中。 在Excel中查看信息时,舍入的数字与显示的数字相符。