尝试使用float <measure>将常规float值添加到类型。 F#

时间:2018-10-22 18:12:04

标签: types casting f#

我正在尝试将float转换为普通类型,并将float []转换为其他类型,我不确定如何继续。

我想转换为的类型:

[<Measure>] type radian
[<Measure>] type degree
[<Measure>] type km
[<Measure>] type mi
type LatLong = { Lat : float<degree>; Long : float<degree> }

我想从中转换的类型:

type Msg = {
    Mmsi: int;
    Time: string;
    Latitude: float;
    Longitude: float;
}

我想到了一个转换,例如:

let dist = {Lat = msg.Latitude<degree>; Long = msg.Longitude<degree>}

会工作,但似乎出于某种原因,所以没有人对此有所了解吗?非常感谢!

1 个答案:

答案 0 :(得分:3)

如果不涉及其他公式,则将数字类型转换为带有度量单位的数字类型,方法是乘以“单位”度量单位,即乘以1。

let msg = { Mmsi = 42; Time = string System.DateTime.Now; Latitude = 0.; Longitude = 0. }
let dist = {Lat = msg.Latitude * 1.<degree>; Long = msg.Longitude * 1.<degree>}
// val dist : LatLong = {Lat = 0.0;
//                       Long = 0.0;}

此文档记录在{em>转化下的Microsoft page on units of measure上。