Там создается в версии функций преобразования типа, которая сохраняет единицы и если не, как я сделал бы их? Так, например, с этим кодом, как я бросил бы intWithSecondsMeasure к плаванию, не теряя меру или умножившись 1.0<s>
?
[<Measure>] type s
let intWithSecondsMeasure = 1<s>
let justAFloat = float intWithSecondsMeasure
Я не думаю, что есть встроенный способ сделать это, но вы можете легко определить свою собственную функцию преобразования с сохранением единиц:
let float_unit (x:int<'u>) : float<'u> = unbox float x
let floatWithSecondsMeasure = float_unit intWithSecondsMeasure
См. Мой ответ на этот вопрос:
Безопасные для единиц квадратные корни
, из которых сегодня можно предположить:
[<Measure>]
type s
let intWithSecondsMeasure = 1<s>
let intUtoFloatU< [<Measure>] 'u>( x : int<'u> ) : float<'u> = //'
let i = int x // drop the units
let f = float i // cast
box f :?> float<'u> //' restore the units
let floatWithS = intUtoFloatU intWithSecondsMeasure