Ich schreibe meinen Code, als ob diese alle die gleiche Sache sind und keine Probleme haben, aber es beginnt mich zu verwirren, wenn ich über eine Funktion in Visual Studio schwebe und sehe, dass die Typdefinitionen 3 verschiedene Typen enthalten Gedanken waren alle gleich. Sind sie gleich? Oder sind sie anders?Sind float array, float [] und double [] verschieden oder gleich?
Antwort
Sie sind gleich. Siehe die Typenkürzel am Ende der FSharp.Core Dokumentation. float = double = System.Double
und array<'T> = 'T[]
. Sie können auch Ihre eigene Art Abkürzungen definieren und sie auf die gleiche Weise verwenden:
type dbl = double
let (d:dbl) = 1.0
Sie darüber nicht fragen, aber beachten Sie, dass der Ort, wo Typ Abkürzungen nicht ganz wie Sie Maßnahme erwarten könnte funktionieren würde, ist Arten; float<_>
ist unabhängig von float
, double
und System.Double
definiert, und es gibt keine entsprechenden double<_>
oder System.Double<_>
.
ok, danke kvb ... –
Neben den Typenkürzeln gibt es zwei nützliche Dinge, die Sie über F # -Typen wissen sollten. Zuallererst gibt es zwei Möglichkeiten, Namen generischer Typen zu schreiben. Eine Möglichkeit ist es, die OCaml Syntax zu verwenden und die zweite Möglichkeit ist die .NET-Syntax zu verwenden:
- Wenn .NET-Syntax, die Sie schreiben
array<'T>
oder zum BeispielOtherType<'T1, 'T2>
(für Typen mit mehr als einem generischen Typparameter) . - In der OCaml Syntax ist die gleiche wie
'T array
oder('T1, 'T2) OtherType
geschrieben
Diese beiden Bezeichnungen sind gleichwertig - wenn Sie einen Wert vom Typ kommentierte mit .NET Syntax deklarieren, können Sie es auf einen Wert zuweisen mit der OCaml-Syntax kommentiert. 'T[]
ist eine spezielle Notation für Arrays, aber dies erklärt, warum array<'T>
das gleiche wie 'T array
ist.
Die zweite Sache ist, dass F # ein bisschen unglückliche Benennung für Gleitkommazahlen Typen verwendet. Dies ist wahrscheinlich auf die Kompatibilität mit OCaml, aber es kann leicht .NET-Programmierer verwirren: # float Typ entspricht System.Double
in .NET (die aufgerufen wird, double
in C#)
- F Typ entspricht
System.Single
in .NET (diefloat
in C# genannt wird)
Wie @kvb darauf hinweist, Doppel ist ein weiteres T Ype Alias für den System.Double
Typ.
Natürlich gibt es auch die Abkürzung 'single', die auch mit' float32' synonym ist . Und 'int = int32 = System.Int32' und' int8 = sbyte = System.Sbyte' usw. – kvb
- 1. Double vs Float - Java
- 2. Größe von float und double
- 3. Umwandlung int float/double
- 4. Konvertieren von char * in float oder double
- 5. Extrakt float/double Wert
- 6. double oder float, was ist schneller?
- 7. Aufrunden Ganzzahl ohne float, double oder division
- 8. Wie erfolgt die Fließkommaumwandlung tatsächlich in C++ (double to float oder float to double)
- 9. float, double und int Mathematik in Java
- 10. Unterschied zwischen Float und Double in PHP?
- 11. float vs double (in Java)
- 12. C# BitConverter.GetBytes (float/double) Format?
- 13. Mögliche verlustreiche Konvertierung von Double in Float, Float-Werte gegeben?
- 14. Digits in float und double Variable
- 15. eine Datei von Float und Double lesen?
- 16. Convert Double in Float von Cast oder Convert.ToSingle()?
- 17. Wird Double schneller als Float verwendet?
- 18. Java: Soll ich Float oder Float verwenden?
- 19. `float` vs` double` bei gelegentlichen Einzelberechnungen?
- 20. Konvertieren von Double in Float in Java
- 21. umgewandelt 32bit-float zu 64bit-double auf System wo sizeof double == sizeof float == 4
- 22. Vergleichen Float-Array als int-Array
- 23. Wie wird Double oder Float in Graphview Android angezeigt?
- 24. Wie bindet man ein Float oder Double mit JGoodies
- 25. Autoftixture - Erstellen Sie einen Float, double oder decimal mit Rest
- 26. Fehler mit EXPECT_EQ für Summe von Double oder Float
- 27. Wie werden float und double in C++ (gcc) dargestellt?
- 28. Double vs Float auf dem iPhone
- 29. Wie man Float als Double verhalten?
- 30. Hibernate: Gefunden: float, expected: double precision
http://msdn.microsoft.com/en-us/library/dd233193.aspx –