Tom*_*cek 11
除了已经说过的内容之外,关于(不仅仅是)F#度量单位信息的最佳资源是Andrew Kennedy的博士论文,他实际上设计了F#单元.他提到了分数单位:
最重要的决定是是否允许维度的分数指数.反对它们的论证是哲学的:具有诸如M 1/2的维度的数量在物理上是没有意义的,并且如果出现这样的事物,它将建议修改基本维度集合而不是对积分指数的重新评估.赞成的论点是务实的:有时编写程序代码会更容易,这些程序代码暂时创建一个维度具有小数指数的值.在本论文中,前一种观点占主导地位,并且不考虑分数指数.但是,大多数理论都适用于同样的理论; 任何潜在的差异在出现时都会突出显示.
我认为这基本上是F#没有分数单位的原因,因为F#设计非常接近安德鲁肯尼迪的工作,以确保它是合理的.
更新:使用F#4.0,已实现对小数指数的支持
小智 5
具有分数指数的单位非常常见,并且没有什么特别之处.技术上的每个人都可能遇到电压噪声密度,每平方米(Hz)测量一次.这在物理上很有意义,噪声功率与带宽成正比,而噪声电压是功率的sqrt,这里没有奇怪的数学.
每次遇到分数幂指数时创建一个新的基本单位不是正确的方法.
这些单位不是SI单位,它们的使用会破坏库的兼容性.如果将sqrtHz定义为新单位并定义rootHz,则我们的代码无法一起工作.无论如何,我需要引入相当大的基本单位来完成设置Hz ^ -2,Hz ^ 3,Hz ^ -5,......只是为了提供合理的指数似乎是更好的选择,顺便说一句.Boost.units这样做.