>백엔드 개발 >C++ >C# 이중 형식 지정과 디버거 값이 다른 이유는 무엇입니까?

C# 이중 형식 지정과 디버거 값이 다른 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-04 22:03:45235검색

Why Do C# Double Formatting and Debugger Values Differ?

C에서 Double 형식을 지정할 때 발생하는 현상

C#에서 출력에 대해 double 형식을 지정할 때 출력이 디버거에 표시되는 값과 다르다는 점에 유의하는 것이 중요합니다. 그 이유는 다음과 같습니다.

기본 문제

출력 정밀도가 형식 지정자에 의해 결정되는 C와 달리 C#에서는 서식을 적용하기 전에 모든 double을 유효 십진수 15자리로 반올림합니다. 이러한 불일치는 C#이 요청된 정밀도보다 정확성을 우선시하기 때문에 발생합니다.

Visual Studio 디버거의 동작

Visual Studio 디버거는 double의 내부 이진 표현을 직접 표시하므로 형식화된 출력과 불일치합니다.

해결책: 사용자 지정 서식

동안 C#에는 정확한 소수점 형식 지정을 위한 기본 제공 솔루션이 없으므로 내부 이진 데이터에서 문자열 표현을 수동으로 구성할 수 있습니다. 또는 정확한 소수점 출력을 위한 ToExactString 메서드를 제공하는 Jon Skeet의 DoubleConverter와 같은 타사 라이브러리를 사용할 수 있습니다.

DoubleConverter를 사용하여 double을 소수점 이하 20자리로 형식 지정:

double i = 10 * 0.69;
Console.WriteLine(DoubleConverter.ToExactString(i));

위 내용은 C# 이중 형식 지정과 디버거 값이 다른 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.