Ein Float-Bereich (ca. ± 3.4e38) ist viel größer als ein Long-Bereich (ca. ± 9.22e18), obwohl ein Long eine höhere Genauigkeit hat.
Es gibt zwei Gründe
1. Wertebereich (d. H. Maximalwert).
%Vor%%Vor%As, maximaler Wert von float ist größer als lang d. h. long ist in float enthalten.
2. Überlegenheit
Sie können einen Gleitkommawert nicht ohne explizite Konvertierung einem ganzen (einem nicht schwebenden) Wert zuweisen.
aber
%Vor%Hier, auch vom obigen Beispiel, scheint es, dass float lange Daten enthalten kann, aber umgekehrt ist das nicht möglich.
BEARBEITEN: bezüglich der Größe des Datentyps siehe meine Frage Ist der Wertebereich abhängig von Größe des Datentyps?
lang repräsentiert den Int64-Typ, d. h. eine ganze Zahl, während float den Einzeltyp darstellt, d. h. eine Fließkommazahl. Und obwohl die Größe von long größer ist als die von float, ist es nicht möglich, von float in eine ganze Zahl zu konvertieren, ohne dass Informationen verloren gehen.
Weitere Informationen zu long und float type finden Sie unter msdn.
Leute haben den Bereich von float und long erwähnt, aber ein einfacherer Punkt ist, dass Sie nicht die meisten möglichen Gleitkommazahlen in einer ganzen Zahl darstellen können. Wenn Ihr float 3.14159 ist, können die beiden nächsten Werte, die ein long repräsentieren kann, 3 oder 4 sein - beides völlig falsch. Ein Float kann Milliarden von Werten darstellen, die zwischen 3 und 4 liegen. Es ist auch höchst unwahrscheinlich, dass ein Programmierer einen Float für einen Wert verwendet, wenn er ganzzahlige Werte darstellen möchte - es wäre ein sehr schlechtes Design Entscheidung. Es ist also einfach zu gefährlich, implizit float- & gt; int zu konvertieren, weil die Daten, die Sie mit ziemlicher Sicherheit verlieren werden, fast sicher wichtig sind. Es ist nicht etwas, was wir absichtlich sehr oft tun, und wenn wir es tun, möchten wir es normalerweise explizit machen (Math.Floor (floatValue)).
Wenn Sie in die entgegengesetzte Richtung gehen (int - & gt; float), kann ein Float normalerweise "adäquat" einen ganzzahligen Wert darstellen. Der Vorbehalt mit Fließkomma ist, dass Zahlen nur als Näherung gespeichert werden können - je größer der Wert, desto weniger genau kann er dargestellt werden. Die Genauigkeit eines Floats liegt jedoch bei etwa 6 signifikanten Werten - verlustbehaftet, aber Sie verlieren nur rund ein Millionstel des ursprünglichen Wertes. In vielen Fällen wird das unbedeutend sein. (In den Fällen, in denen wichtig sein wird, werden Programmierer immer sehr vorsichtig sein, die Launen von Gleitkommazahlen in ihre Berechnungen einzubeziehen, so dass sie in der Praxis selten ein Problem verursachen). Daher ist es bequemer / nützlicher, die implizite Umwandlung in diese Richtung zuzulassen, da dies absichtlich viel ist.
Tags und Links c# types floating-point