以编程方式读取excel文件时未舍入的数字

以编程方式读取excel文件时未舍入的数字,excel,openxml,Excel,Openxml,我在excel中有一个列,其中的数字使用舍入法四舍五入到小数点后2位 在excel中,数字在四舍五入后看起来应该是一样的。E“2,22” 但是当我用openxml读取c代码中的数字时,我得到的不是2,22而是“22199999999998” 因此,看起来汇总并没有真正改变数字,只是改变了数字的显示方式 我怎样才能将一个数字四舍五入,使它能够被openxml完全按照excel中显示的方式读取 excel工作表如下所示: 代码如下: 使用(var excelPackage=new excelPac

我在excel中有一个列,其中的数字使用舍入法四舍五入到小数点后2位

在excel中,数字在四舍五入后看起来应该是一样的。E“2,22”

但是当我用openxml读取c代码中的数字时,我得到的不是2,22而是“22199999999998”

因此,看起来汇总并没有真正改变数字,只是改变了数字的显示方式

我怎样才能将一个数字四舍五入,使它能够被openxml完全按照excel中显示的方式读取

excel工作表如下所示:

代码如下:

使用(var excelPackage=new excelPackage(File.OpenRead(pathToFile))){
var worksheet=excelpack.Workbook.Worksheets.FirstOrDefault();
var value=工作表。单元格[2,2]。GetValue();/“2219999999998”
}

RoundUp
不会更改单元格类型,它仍然是一个双精度数字,而不是一个真正的十进制数字,就像在许多编程语言中一样

实际上,许多双精度数字并没有精确的二进制表示。它是存在的,只适用于整数和一些小数,比如0.5

有52位表示尾数(
F
),1位表示符号(
S
),11位表示二进制科学符号表示法的指数(
E

如果
0
=Text(number,"#.##")