Gembox正在阅读不同的双倍价值

时间:2016-10-14 19:15:12

标签: c# .net spreadsheet gembox-spreadsheet

我有gembox库的实现,并且我正在从Excel中读取数值。

例如,gembox读取的值如101.41179656982422但是如果我在单元格值中打开excel是101.411796569824

1 个答案:

答案 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;