현재 복잡한 계산에서 높은 정밀도를 가진 숫자로 작업하고 있습니다. 일부 결과 및 소스 데이터는 직렬화 된 형식으로 저장해야합니다. 모든 것이 좋은 때까지 마술 double 값 : 0.00000060912702792848.C# 매직 이중 값 구문 분석
s = d.ToString("R", NumberFormatInfo.InvariantInfo);
이 예상 부여합니다 결과 6.0912702792848E-07 : 문자열로 그 값을 (XmlWriter를이 무엇을하는 것이) 작성
.
그러나 마법의 시작은 내가 다시 (길을 어떻게 XmlReader를 작품) double 값을 얻을 때 :
d=double.Parse(s, NumberStyles.Float, NumberFormatInfo.InvariantInfo);
다시 변환 값이 마지막에 005 여분의 자리 0.00000060912702792848005입니다.
이러한 결과를 제공하는 숫자의 특수 조합처럼 보입니다. 무엇이 놓칠까요?
환경 : Windows 7 Professional, 64-bit. 당신이 마지막에 추가 소수 없애하려는 경우 귀하의 질문에 정확히 대답은, 당신은
부동 소수점 숫자가 정확하지 않다는 것을 알고 있다고 생각하십니까? –
네, 저도 압니다. 그리고 복식으로 수학 연산에 편차가 있는지 궁금하지 않습니다. 그러나 나는 문자열에서 double을 변환 한 후 다른 숫자를 얻는 이유와 그 여분의 숫자가 오는 곳에서 다른 숫자를 얻는 것이 왜 놀랍다. – Gennadiy