我想为GPX库创建一个结构Degrees
。在XSD for GPX(GPX 1.1 Schema)degreesType
定义为minInclusive = 0和maxExclusive = 360.现在结构应该有两个公共静态字段MinValue = 0
和{{1 }}:
MaxValue = x
指定x值的最佳方法是什么? 360D-1将是不准确的,360D-0.001将是一个假设,没有人想要比1/1000度更好的准确度。
答案 0 :(得分:1)
我可以想到两种方法:
让您的结构忠实地代表
指定范围的事实
包含最小值和最小值
独家最大;即,给你的
struct MinInclusive
和MaxExclusive
成员。这可能被视为
教你的结构太多了
XSD的实现细节,
虽然
将MaxValue
定义为小于360的最高可表示decimal
值。由于decimal
是十进制浮点类型,我们在这里必须要小心,但我想我说得对,因为最小的可能值是10^-28
,而360我们在小数点的左边有两个10的幂,相关的值是{{ 1}},或
360 - 10^-26
我假设您正在处理从const decimal MaxValue = 359.99999999999999999999999999m;
到decimal
的转换。请注意Degree
的类型声明字符为decimal
或m
- M
或d
表示D
。