Gleitkommazahlentyp vom numerischen Typ:
In unserem täglichen Leben gibt es nicht nur ganze Zahlen, sondern auch Dezimalzahlen. In C# gibt es zwei Datentypen für Dezimalzahlen: (einfache Genauigkeit) float, ( doppelte Präzision) )double.
Der Unterschied liegt im Wertebereich und in der Genauigkeit. Die Rechengeschwindigkeit des Computers ist für Gleitkommazahlen viel geringer als für Ganzzahlen und die Rechengeschwindigkeit für Double-Typen ist geringer als für Gleitkommazahlen Das Programm wird durch die umfangreiche Verwendung von Gleitkommazahlen mit doppelter Genauigkeit mehr Speichereinheiten beanspruchen und die Verarbeitungsaufgaben des Computers werden anspruchsvoller. Allerdings sind die Ergebnisse bei Verwendung von Gleitkommazahlen mit doppelter Genauigkeit genauer als bei Gleitkommazahlen, sodass die Genauigkeitsanforderungen nicht sehr hoch sind . In diesem Fall können wir den Float-Typ verwenden.
Typ mit einfacher Genauigkeit (Float): Der Wertebereich liegt zwischen plus und minus 1,5*10^-45 und 3,4*10^38, und die Genauigkeit beträgt 7 bis 8 Stellen.
Doppelt Präzisionstyp (doppelt): Der Wertebereich liegt zwischen plus und minus 5,0*10^-324 bis 1,7*10^308. Die Genauigkeit beträgt 15 bis 16 Stellen; 🎜>
Vergleich der Ergebnisse:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Example { class Program { static void Main(string[] args) {//同一类型在同一行定义时 用 , 分开 float a = 3.0f,b = 10.0f; //这里注意定义float时 加上f/F 应为默认小数是double类型 float c = b / a; //相除 double d = 3.0, e = 10.0; double f = e/d; Console.WriteLine("float c={0}\ndouble f={1}",c,f); //输出 "\n" 表示换行 } } }
Im realistischen Sinne habe ich das Ergebnis von float sorgfältig gezählt, es gibt 8 Ziffern, davon 7 Zahlen ; das Ergebnis von double ist 16. Die 15. Ziffer ist die Zahl 3;
In einer nachdenklichen Haltung habe ich über die Eigenschaften von float und double nachgedacht. Der Bereich von float liegt nicht zwischen plus oder minus 1,5*10^ -45 bis 3,4*10^38 Von? Es kann mindestens 38 Ziffern darstellen, also nur 7 Ziffern. Double kann mindestens 300 Ziffern darstellen, also nur 16 Ziffern. Das Ergebnis sollte 38 3 sein, also mehr als 300 3 . Das stimmt. ? ? Warum? ? ? Wird zwischen der 9. und 17. Ziffer gerundet? Ich habe den folgenden Code noch einmal geschrieben:Das Ergebnis ist dieses:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Example { class Program { static void Main(string[] args) { float a = 3.333334444333333f; //第8位(小数点也算一位)开始是4,第9位是4 double d = 3333333333333.3455555544; //第16位是4,17位是5 Console.WriteLine("float c={0}\ndouble f={1}",a,d); //输出 "\n" 表示换行 } } }
Natürlich ist die 8. Position von Float auf 4 gerundet und wurde in geändert 0 weggelassen. Das 16. Bit von Double ist ursprünglich 4. Da das 17. Bit 5 ist, wird 1 hinzugefügt und die folgende 0 weggelassen. .
Das Obige ist der Inhalt von C# Learning Diary 06 --- Datentyp – Gleitkommazahltyp. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (m.sbmmt.com)!