우리는 같은 측정 단위 정의하는 경우 : 측정과 다음유지 장치
[<Measure>] type s
및 정수를
let t = 1<s>
다음은 float로 변환
let r = float t
측정 유형이없는 r = 1.0
이 표시됩니다. 이것은 모든 측정 정보가 손실 되었기 때문에 매우 이상하게 보입니다.
당신이 바로 그 유형을 적용
let inline floatMeasure (arg:int<'t>) : (float<'t>) =
LanguagePrimitives.FloatWithMeasure (float arg)
처럼 뭔가 float로 다시 변환 LanguagePrimitives.FloatWithMeasure
를 사용할 수 있지만,이 측정 단위 (HTTP에 대한 문서로 최적의 솔루션처럼 생각하지 않습니다 //msdn.microsoft.com/en-us/library/dd233243.aspx) 상호 운용성 계층을 작성하기위한, 당신은 단위로 값을 단위없는 값을 변환하는 데 사용할 수있는 몇 가지 명시 적 기능도있다, 그러나
말 . 이들은 Microsoft.FSharp.Core.LanguagePrimitives 모듈에 있습니다. 예를 들어, 단위가없는 float에서 float로 변환하려면 다음 코드와 같이 FloatWithMeasure를 사용합니다.
이 코드는 F # 코드에서이 함수가 사용되지 않아야 함을 나타냅니다.
더 많은 관용적 인 방법이 있습니까?
여기에 귀하의 요지가 있습니다. 나는 내가 이산 시간 단계 (int가 좋음)에서 simularion을 앞으로 내딛었지만, 내 방정식의 일부에서 총 시간을 사용하여 이것을 자른 것이라고 덧붙였다. 아마 진짜 대답은'int'를 전혀 사용하지 않는 것입니다. –