如何在struct上指定maxExclusive?

时间:2009-08-25 10:34:59

标签: c# .net data-structures struct gpx

我想为GPX库创建一个结构Degrees。在XSD for GPX(GPX 1.1 SchemadegreesType定义为minInclusive = 0和maxExclusive = 360.现在结构应该有两个公共静态字段MinValue = 0和{{1 }}:

MaxValue = x

指定x值的最佳方法是什么? 360D-1将是不准确的,360D-0.001将是一个假设,没有人想要比1/1000度更好的准确度。

1 个答案:

答案 0 :(得分:1)

我可以想到两种方法:

  • 让您的结构忠实地代表 指定范围的事实 包含最小值和最小值 独家最大;即,给你的 struct MinInclusiveMaxExclusive 成员。这可能被视为 教你的结构太多了 XSD的实现细节, 虽然

  • MaxValue定义为小于360的最高可表示decimal值。由于decimal是十进制浮点类型,我们在这里必须要小心,但我我说得对,因为最小的可能值是10^-28,而360我们在小数点的左边有两个10的幂,相关的值是{{ 1}},或

    360 - 10^-26

    我假设您正在处理从const decimal MaxValue = 359.99999999999999999999999999m; decimal的转换。请注意Degree的类型声明字符为decimalm - Md表示D