Ja, das ist normal, weil Fließkomma-Zahlen in Variablen als Basis und Exponent gespeichert werden. Daher sind (theoretisch) unendlich große Zahlenwerte möglich, es treten aber Rundungsfehler auf. Und da die 8 byte des Doubles eben für Basis und Exponent geteilt werden (das genaue Verhältnis weiß ich grad nicht) stehen eben nur eine begrenzte Anzahl von Ziffern vor dem Komma zur Verfügung, wie auch begrenzte Ziffern als Exponent.

Andere Frage - wozu brauchst du in deinem Programm Variablen mit solch riesigen Werten bzw. wieso muss die Genauigkeit nach der 10ten Stelle von links noch so genau sein? Bei diesem riesigen Betrag müsste der Wert doch verschwindend unbedeutsam sein, ob nun 0 oder 9, oder was dazwischen...