我有gembox库的实现,并且我正在从Excel中读取数值。
例如,gembox读取的值如101.41179656982422但是如果我在单元格值中打开excel是101.411796569824
答案 0 :(得分:0)
我相信我们弄清楚问题是什么,让我们考虑以下示例代码:
var ef = new ExcelFile();
var ws = ef.Worksheets.Add("Sheet1");
double number = 0.12345678912345678;
ws.Cells["A1"].Value = number;
ef.Save("Sample.xlsx");
number
变量的精度为17位小数。在.NET Framework中,System.Double值最多包含15个十进制数字的精度,但内部最多保留17位数,请参阅here。
但在MS Excel中,数字精度最大限制为15位,请参阅here。
因此,简而言之,在上面的示例中,生成的输出文件将包含所有17个十进制数字,但是当您使用MS Excel打开此文件时,它会将该值舍入为15位十进制数字。
为了避免这种差异,您需要确保您的double值始终最多为15位小数,例如:
double number = 0.12345678912345678;
double roundedNumber = Convert.ToDouble(number.ToString());
ws.Cells["A1"].Value = roundedNumber;