如果我们定义度量的像单元:维护单位
[<Measure>] type s
,然后一个整数与量度
,然后将其转换为一个浮
let r = float t
我们看到r = 1.0
没有度量类型。这似乎很奇怪,因为所有的度量信息都已经丢失。
您可以使用LanguagePrimitives.FloatWithMeasure
转换回一个浮动的东西,如
let inline floatMeasure (arg:int<'t>) : (float<'t>) =
LanguagePrimitives.FloatWithMeasure (float arg)
其强制执行的权利类型,但是这并不觉得自己是正确的解决方案为文档的测量单位(HTTP: //msdn.microsoft.com/en-us/library/dd233243.aspx)说
然而,对于写作的互操作性层,也有,你可以用它来无量纲值转换为数值与单位一些明确的功能。这些位于Microsoft.FSharp.Core.LanguagePrimitives模块中。例如,要将无单位浮点数转换为浮点数,请使用FloatWithMeasure,如下面的代码所示。
这似乎表明该函数应该在F#代码中避免。
有没有更习惯的方式来做到这一点?
我明白你的意思了。我想我会补充一点,这是因为我正在以离散时间步长进行仿真(对于这个步骤“int”很好),但是在我的一些方程中使用了总时间。可能真正的答案是完全避免使用int。 – 2012-02-23 09:17:01