0

GPXライブラリの構造Degreesを作成したいと思います。XSD for GPX(GPX 1.1 Schema)では、minInclusive=0およびmaxExclusive=360として定義されています。構造には、2つのパブリック静的フィールドと:が含まれます。degreesTypeMinValue = 0MaxValue = x

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

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

xの値を指定する最良の方法は何ですか?360D-1は不正確であり、360D-0.001は、1/1000度よりも優れた精度を誰も望んでいないという仮定になります。

4

1 に答える 1

1

私は2つのアプローチを考えることができます:

  • 範囲が包括的最小値と排他的最大値で指定されているという事実を構造体に忠実に表現させます。つまり、構造体MinInclusiveMaxExclusive メンバーを指定します。これは、XSDの実装の詳細について構造体に教えすぎていると見なされる可能性がありますが

  • 360未満MaxValueの表現可能な最大値として定義します。は小数点浮動小数点型であるため、ここでは少し注意する必要がありますが、可能な最小値はであり、360では2つあると言っても過言ではありません。小数点の左側の10の累乗、関連する値は、、またはdecimaldecimal10^-28360 - 10^-26

    const decimal MaxValue = 359.99999999999999999999999999m;
    

    decimalからへの変換はあなたが担当していると思いますDegree。の型宣言文字decimalm、またはM-dまたはDですdouble

于 2009-08-25T10:43:14.380 に答える