2016-10-14 2 views
0

저는 gembox 라이브러리를 사용하여 구현되었으며 Excel에서 숫자 값을 읽습니다.Gembox가 다른 double 값을 읽습니다.

는 gembox이 101.41179656982422처럼 읽는 예를 들어 값입니다하지만 난 셀 값에 엑셀을 열면 내가의 다음 예제 코드를 살펴 보자, 우리는 문제가 무엇인지 파악 생각 101.411796569824

답변

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 값은 내부에서 최대 17 자리 숫자가 유지되지만 15 자릿수의 정밀도를 갖습니다 (here 참조).
그러나 MS Excel에서 숫자 정밀도의 최대 한도는 15 자리입니다 (here 참조).

간단히 말해 위의 샘플에서 결과 출력 파일에는 17 개의 십진수가 모두 기록되지만 MS Excel에서이 파일을 열면이 값은 15 진수로 반올림됩니다.
이 차이를 피하려면 double 값이 항상 최대 15 자리 10 진수이어야합니다 (예 :

double number = 0.12345678912345678; 
double roundedNumber = Convert.ToDouble(number.ToString()); 
ws.Cells["A1"].Value = roundedNumber; 
).
관련 문제