Чтобы добавить еще одну альтернативу, я бы написал:
let inline convertToMeters x : float<m> = unbox (box (float x));;
Вы можете использовать функцию для преобразования любого типа, который можно преобразовать в float
, в тип float<m>
(что хорошо, потому что она также работает с целыми числами и т. Д., Но не со всеми случайными типами, такими как System.Random
). Вы можете увидеть это из подписи типа:
val inline convertToMeters :
^a -> float<m> when ^a : (static member op_Explicit : ^a -> float)