C#到F#的双精度浮点型隐式转换

Tho*_*mas 1 f#

我有以下C#函数:

public (double? Average, int? Count) AverageQuotes(Candle.Intervals Interval, DateTime From, DateTime To)
Run Code Online (Sandbox Code Playgroud)

我在F#中获得数据:

let struct (average, count) = db.AverageQuotes(previous, time, time + timespan)
Run Code Online (Sandbox Code Playgroud)

问题在于,Average将C#留为两倍吗?并以Nullable的形式到达F#,因此在某处发生了double-> float转换。

如何使结果保持两倍?

Lee*_*Lee 6

在F#,float并且double是别名System.Double。32位双精度的别名为float32single。参见基本类型规范的第18.1节(PDF)