我一直認爲類型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