【发布时间】:2018-12-12 01:03:23
【问题描述】:
Swift 4.2 Xcode 10β2
背景
我正在整合一个与天文学相关的 API,以处理我正在使用的应用程序中的数学运算。目的是使用Measurement 类来处理角度和距离的输入和输出。通过这种方式,用户可以使用他们喜欢的单位(例如度或弧度、英里或公里或任何组合)输入数据,并以相同的单位获得输出。
在我测试结果之前,这似乎工作得很好。在一个相对简单的计算中,比如在给定纬度到地球中心的距离,我得到了大约两公里的误差。
花了几个小时(因为我认为这是计算中的舍入错误),但我最终将问题追溯到 Measurment 类本身。度数和弧度之间的转换系数不准确。它应该是 180.0 / Double.pi (57.29577951308232...) 但是 57.9528。
代码示例
print(UnitAngle.radians.converter.baseUnitValue(fromValue: 1.0)) // Inaccurate.
print(180.0 / Double.pi) // Accurate.
问题
所以,两个(好的三个)问题:
- 这是一个错误吗?这一定是一个错误。这太不准确了。
- 是否可以将转换因子设置为不同的值(或子类
Measurement以实现相同)。 - 我应该推出自己的测量类还是放弃单位转换的想法并在内部坚持使用 SI 单位? (会很伤心,因为否则,它确实(原文如此)我想要的。)
【问题讨论】:
标签: swift xcode units-of-measurement