logo

C Float und Double

Schweben Und doppelt sind zwei primitive Datentypen in der C-Programmierung, die zum Speichern verwendet werden Dezimalwerte . Beide speichern Gleitkommazahlen, unterscheiden sich jedoch in der Genauigkeit, mit der sie die Werte speichern können.

In diesem Artikel werden wir jeden von ihnen im Detail untersuchen, ihre Gedächtnisdarstellung und den Unterschied zwischen ihnen.



Schweben

Float wird zum Speichern von Gleitkommazahlen mit einfacher Genauigkeit verwendet. Es kann Dezimalwerte mit einer Genauigkeit von bis zu 6-7 Dezimalstellen speichern.

Syntax

 float var_name ;>
  • Die Größe des Schwimmers beträgt 4 Bytes.
  • Float kann Werte speichern, die variieren 3,4 x 10-38bis 3,4 x 1038.
  • Es können Werte bis zu gespeichert werden 7 Dezimalstellen ohne Präzisionsverlust.
  • Der Formatbezeichner für float ist %F.

Beispiel

C




Namenskonvention für Java





// C Program to illustrate float> #include> > int> main()> {> >// Syntax of declaring and initializing> >// the float variable> >float> myVariable = 789.123456f;> > >// printing floating point number> >printf>(>'Float value is %f'>, myVariable);> >return> 0;> }>

>

>

Ausgabe

Python oder
Float value is 789.123474>

Wie Sie in der obigen Ausgabe sehen können, geht die Genauigkeit von Dezimalzahlen nach der 7. Ziffer aufgrund der begrenzten Bits in Float verloren. In diesen Fällen wird ein doppelter Datentyp empfohlen.

Notiz: Alle Literale reeller Zahlen sind standardmäßig vom Typ double. Wir können eine anhängen F am Ende des Literals, um es als Float-Typ zu definieren.

Doppelt

Double wird zum Speichern von Gleitkommawerten mit doppelter Genauigkeit verwendet. Es ist die größere Version von float, die reelle Zahlen mit einer Genauigkeit von bis zu 15 Dezimalstellen speichern kann.

  • Die Größe des Doppels beträgt 8 Byte.
  • Der Bereich des Doppelten beträgt 1,7×10-308bis 1,7×10+308.
  • Es können Werte bis zu gespeichert werden 15 Dezimalstellen ohne Präzisionsverlust.
  • Der Formatbezeichner für double ist %lf

Beispiel

C


zufällig nicht in Java



#include> > int> main()> {> >// Syntax of declaring and initializing> >// the double variable> >double> myVariable = 789.123456;> >printf>(>'Double value is %lf'>, myVariable);> >//%lf or %f both can be used to> >// print Float values> >return> 0;> }>

Java-Swing
>

>

Ausgabe

Double value is 789.123456>

Wie werden Float und Double gespeichert?

Die C-Sprache folgt dem IEEE 754-Standard zur Darstellung von Gleitkommawerten im Speicher. Im Gegensatz zum Typ int, der direkt in binärer Form im Speicher gespeichert wird, werden die Float-Werte in zwei Teile geteilt: Exponent und Mantisse, und dann gespeichert.

Bash, wenn sonst

Gemäß IEEE 754 bestehen die Gleitkommawerte aus 3 Komponenten:

    Vorzeichenbit: Dies stellt das Vorzeichen der Zahl dar. 0 steht für positiv, während 1 für negativ steht. Voreingenommener Exponent: Der Exponent der Zahl kann nicht direkt gespeichert werden, da er sowohl negativ als auch positiv sein kann. Daher verwenden wir einen voreingenommenen Exponenten, bei dem wir dem Exponenten eine gewisse Vorspannung hinzufügen. Normalisierte Mantisse: Matissa ist die Zahl in wissenschaftlicher Notation, d. h. Präzisionsbits der Zahl.

C-Float-Speicherdarstellung

Die Größe des Floats beträgt 32 Bit, davon:

    Das höchstwertige Bit (MSB) wird zum Speichern verwendet Zeichen der Zahl.
  • Der nächste 8 Bit dienen der Speicherung der Exponent.
  • Der Rest 23 Bit dienen der Speicherung der Mantisse.
Speicherdarstellung von Float

Beispiel

Nehmen wir 65,125 als Dezimalzahl, die wir im Speicher speichern möchten.

Converting to Binary form, we get: 65 = 1000001 0.125 = 001 So, 65.125 = 1000001.001 = 1.000001001 x 106 Normalized Mantissa = 000001001 Now, according to the standard, we will get the baised exponent by adding the exponent to 127, = 127 + 6 = 133 Baised exponent = 10000101 And the signed bit is 0 (positive) So, the IEEE 754 representation of 65.125 is, 0 10000101 00000100100000000000000>

C-Doppelspeicherdarstellung

Die Größe des Floats beträgt 32 Bit, davon:

    Das höchstwertige Bit (MSB) wird zum Speichern verwendet Zeichen der Zahl.
  • Der nächste 11 Bit dienen der Speicherung der Exponent.
  • Der Rest 52 Bit dienen der Speicherung der Mantisse.
Speicherdarstellung von Double

Beispiel

Nehmen wir das Beispiel der gleichen Zahl 65,125,

From above, 65.5 = 1.000001001 x 106 Normalized Mantissa = 000001001 Now, according to the standard, bais is 1023. So, = 1023 + 6 = 1029 Baised exponent = 10000000101 And the signed bit is 0 (positive) So, the IEEE 754 representation of 65.125 is, 0 10000000101 0000010010000000000000000000000000000000000000000000>

Unterschiede zwischen Float und Double

Punkte

Schweben

Doppelt

Präzision Float ist ein IEEE 754-Gleitkomma mit einfacher Genauigkeit, das eine Genauigkeit von bis zu 7 Dezimalstellen bietet. Double ist ein IEEE 754-Gleitkomma mit doppelter Genauigkeit, das eine Genauigkeit von bis zu 15 Dezimalstellen bietet.
Speichernutzung Float verwendet 32 ​​Bit oder 4 Byte Speicher. Double verwendet 64 Bit oder 8 Byte Speicher.
Reichweite Float kann Werte zwischen 3,4 x 10 speichern-38auf 3,4 x 10+38. Der Bereich von double beträgt 1,7×10-308bis 1,7×10+308.
Formatbezeichner %F ist der Formatbezeichner für Float. %lf ist der Formatbezeichner für double.
Erinnerungsdarstellung Vorzeichen = 1 Bit
Exponent = 8 Bit
Mantisse = 23 Bit
Vorzeichen = 1 Bit
Exponent = 11 Bit
Mantisse = 52 Bit

Abschluss

Zusammenfassend lässt sich sagen, dass C sowohl Float als auch Double für Dezimalzahlen verwendet, diese unterscheiden sich jedoch hinsichtlich Präzision, Speichernutzung, Bereich und Geschwindigkeit. Wenn der Platz begrenzt ist und die Präzision beeinträchtigt werden kann, ist es besser, dort Float zu verwenden, während Double für hochpräzise Anwendungen verwendet wird, bei denen der Platz kein Problem darstellt. Es ist wichtig, den geeigneten Datentyp basierend auf den Anforderungen der Anwendung auszuwählen.