C#에서 double 형식 지정의 기본 동작은 지정된 정밀도를 적용하기 전에 값을 15자리 유효 십진수로 반올림하는 것입니다. 특히 정밀도에 약간의 차이가 있는 값을 처리할 때 예상치 못한 결과가 발생할 수 있습니다.
double 형식을 정확하게 지정하고 요청된 정밀도가 준수되도록 하려면 Jon Skeet이 제공하는 DoubleConverter 클래스를 활용할 수 있습니다. 이 클래스의 ToExactString() 메서드는 double의 정확한 10진수 값을 반환합니다. 지정된 정밀도로 반올림을 통합하려면 메서드를 다음과 같이 수정할 수 있습니다.
public static string ToRoundedExactString(double value, int precision) { string exactString = ToExactString(value); int decimalIndex = exactString.IndexOf('.'); if (decimalIndex == -1) { return exactString; } int decimalCount = exactString.Length - (decimalIndex + 1); if (decimalCount > precision) { exactString = exactString.Substring(0, decimalIndex + 1 + precision); double roundedValue = Double.Parse(exactString); return roundedValue.ToString(); } else { return exactString; } }
이 수정된 메서드를 사용하면 다음 코드는 형식 지정자에 지정된 정밀도와 일치하는 출력을 생성합니다.
double i = 10 * 0.69; Console.WriteLine(DoubleConverter.ToRoundedExactString(i, 20)); Console.WriteLine(DoubleConverter.ToRoundedExactString(6.9 - i, 20)); Console.WriteLine(DoubleConverter.ToRoundedExactString(6.9, 20)); // 6.89999999999999946709 // 0.00000000000000088818 // 6.90000000000000035527
위 내용은 지정된 정밀도와 일치하도록 C#에서 Double의 형식을 정확하게 지정하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!