2009-08-25 8 views
0

GPX 라이브러리에 대해 Degrees 구조를 만들고 싶습니다. GPX 대한 XSD IN (GPX 1.1 Schema) degreesType 해주기 가진다 minInclusive = 0 maxExclusive = (360)의 구조로서 정의된다 개의 공용 정적 필드 MinValue = 0MaxValue = x :struct에 maxExclusive를 지정하는 방법은 무엇입니까?

public struct Degrees : IFormattable, IComparable, IComparable<Degrees>, IEquatable<Degrees> 
{ 
    private decimal value; 

    public static Degrees MinValue = 0M; 
    //public static Degrees MaxValue = x; 
} 

의 값을 지정할 수있는 최선의 방법은 무엇 엑스? 360D-1은 정확하지 않을 것입니다. 360D-0.001은 아무도 1/1000도보다 더 나은 정확도를 원한다는 가정이 아닙니다. 나는 두 가지 방법의

답변

1

을 생각할 수 있습니다 :

  • 당신의 구조체가 충실 범위가 포함 된 최소 및 독점 최대 지정 사실을 나타내고있다; 즉 구조체를 MinInclusiveMaxExclusive 명의 회원에게 제공하십시오. 이 decimal 이후 미만 360 진수는 우리가, 지점 유형을 떠

  • 불구하고 가장 높은 표현할 수 decimal 값으로 MaxValue 정의는 XSD의 너무 많은 약 구현 세부하여 구조체를 가르치는 으로 간주 될 수있다 여기 조금 조심해야 겠어. 나는 가능한 가장 작은 값이 10^-28이고 360은 소수점의 왼쪽에 10의 2 개의 제곱을 가지므로, 적절한 값은 360 - 10^-26이다. 또는

    const decimal MaxValue = 359.99999999999999999999999999m; 
    

    decimal에서 Degree으로 변환을 담당한다고 가정합니다. decimal의 형식 선언 문자는 m 또는 M - d 또는 Ddouble입니다. 나는 주제 "D 리터럴 형식 문자"아래의 MSDN 라이브러리의 다음 문장 오늘 자극 될 때까지

+0

예, 나는 M/m 리터럴에 대해 알고 (및 사용) : 리터럴 형식 문자 D를 덧붙이 리터럴로 Decimal 데이터 형식으로 강제 변환합니다. 식별자 유형 문자 @를 모든 식별자에 추가하면 해당 식별자가 Decimal로 설정됩니다. 그럼에도 불구하고 나는 모든 전환을 돌보고 있습니다. 명확성을 위해 전체 구조 정의를 포함하지 않았습니다. – PVitt

+0

그 페이지 (http://msdn.microsoft.com/en-us/library/xtba3z33.aspx)는 VB.net에 관한 것입니다 ... – AakashM

관련 문제