我一直认为类型float32
和single
是可以互换的,因为它们是类型别名。对于float
和double
也是如此。但是,它们似乎在不同的程序集Microsoft.FSharp.Core.Operators
和Microsoft.FSharp.Core.ExtraTopLevelOperators
中声明。float32 vs single和float与double有什么区别?
此外,弹出式说明略有不同,其中F#在float32
和float
上表示可以采用字符串并使用Parse()
。
但是,试图与single
和double
成功就好过:
let x = single "12.3"
let y = double "13.4"
有没有我应该知道的有什么区别?我一直用他们互换,从来没有真正赋予它另一个想法,直到我看到弹出窗口和签名的区别:他们都只是相应的CLR类型的别名,你可以在prim-types-prelude.fs
看到
// on hovering, or in FSI, this will have the slightly confusing signature:
// val x: a: double -> float
let x (a: double) = float a
'System.Object.ReferenceEquals(typeof,typeof );; System.Object.ReferenceEquals(typeof ,typeof );;' –
PetSerAl
@PetSerAl:如果它们在引用上相同(您的建议有意义且确实相同),那么如何解释它们在UI中的差异以及集?或者,那只是F#玩弄心灵招数? – Abel