0

我想DegreesGPX库创建一个结构。在 GPX 的XSDGPX 1.1 SchemadegreesType中定义为 minInclusive = 0 和 maxExclusive = 360。该结构现在应具有两个公共静态字段MinValue = 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

我可以想到两种方法:

  • 让您的结构忠实地表示范围指定为包含最小值和排除最大值的事实;即,给你的结构MinInclusiveMaxExclusive 成员。这可能被认为是教你的结构太多关于 XSD 的实现细节,虽然

  • 定义为小于 360MaxValue的最高可表示值。由于是十进制浮点类型,我们在这里必须小心一点,但我认为我说得对,因为最小可能值是,而 360 我们有两个小数点左侧的十次方,相关值为,或decimaldecimal10^-28360 - 10^-26

    const decimal MaxValue = 359.99999999999999999999999999m;
    

    我假设您正在处理从decimalto的转换Degree。请注意,类型声明字符decimalmM-dD用于double

于 2009-08-25T10:43:14.380 回答