Um E zu bestimmen starten Sie mit E = 1 und dividieren E solange durch 2 (warum gerade 2 ?), bis die Bedungung 1 + E > 1 nicht mehr erfüllt ist. Der vorletzte Wert ist dann die gesuchte Genauigkeit.
Der Koprozessor auf Intel-basierten Rechnern rechnet intern mit einer erweiterten Genauigkeit. Zur Überprüfung der Abbruchbedingung ist daher eine Hilfsvariable notwendig, in der das Ergebnis (1 + E) in double-Genauigkeit zwischengespeichert wird.
/* Header-Datei einbinden */
#include <stdio.h>
void Datentyp_float(void)
{
  float new, old, a; /* 3 Variablen vom Typ float */
  new = 1; /* new = 1 setzen, weil bei der Maschinengenauigkeit bei 1 begonnen werden soll. */
  a = 2;   /* a = 2 setzen <=> 1 + new */
  while (a > 1)
  {
    old = new;   /* alten Wert merken */
    new /= 2;    /* new durch 2 teilen */
    a = new + 1; /* zum Vergleichen in eine Variable vom Typ float schreiben */
  }
  /* Maschinengenauigkeit vom Typ float ausgeben. */
  printf("Maschinengenauigkeit beim Datentyp float: %e\n",old);
}
void Datentyp_double(void)
{
  double new, old, a; /* 3 Variablen vom Typ double */
  new = 1; /* new = 1 setzen, weil bei der Maschinengenauigkeit bei 1 begonnen werden soll. */
  a = 2;   /* a = 2 setzen <=> 1 + new */
  while (a > 1)
  {
    old = new; /* alten Wert merken */
    new /= 2;  /* new durch 2 teilen */
    a = new+1; /* zum Vergleichen in eine Variable vom Typ double schreiben */
  }
  /* Maschinengenauigkeit vom Typ double ausgeben. */
  printf("Maschinengenauigkeit beim Datentyp double: %e\n", old);
}
int main(void) /* hier beginnt das Hauptprogramm */
{
  Datentyp_float();  /* Procedure für Datentyp float aufrufen. */ 
  Datentyp_double(); /* Procedure für Datentyp double aufrufen. */
  return(0); /* Das Hauptprogramm gibt am Ende 0 zurück, da kein Fehler aufgetreten ist. */
}