Dart für Anfänger 1.7 double Variable

Dart
Dart


In dieser Reihe zu Dart haben wir uns schon mit der integer Variable beschäftigt. Wie sicherlich bekannt, verwenden Sie die integer Variable für ganze Zahlen. In diesem Post geht es jetzt um die double Variable. Sie ermöglicht uns, die Verwendung von Gleitkommazahlen.  Der Beispielcode in diesem Post werden wir im DartPad erstellen.

Um das ganze ein wenig interessanter zu machen, werden wir gleichzeitig auch noch einmal die integer Variable im Code berücksichtigen.

double.parse(..) // int.parse(..)


Der Umgang mit Zeichenketten ist Alltag beim Programmieren. Damit man mit einer Zeichenkette, die eine Zahl darstellt auch rechnen kann, muss man sie in den entsprechenden Typ umwandeln:

void main() {
  int eineGanzeZahl;
  double eineGleitkommaZahl;


  eineGleitkommaZahl = double.parse('3.678');
  eineGanzeZahl = int.parse('22');
 
  print(eineGleitkommaZahl); 
  print(eineGanzeZahl); 
}

Sowohl double.parse, als auch int.parse erfüllen diesen Zweck. Trotzdem empfehlen die Entwickler tryParse(..) zu verwenden. Warum ?
Wenn Sie die Dokumentation zu .parse anschauen, integer und double, sehen Sie, das im Fehlerfall eigener Code bereitgestellt werden müsste. Dieser Umstand wird gelöst mit:

double.tryParse(..) // int.tryParse(..)


Der Unterschied zu der Variante oben ist, das im Fehlerfall das Dart Schlüsselwort null zurückgegeben wird. Dementsprechend müssen Sie aber auch die Variablen mit einem Fragezeichen markieren:


void main() {
  int? eineGanzeZahl;
  double? eineGleitkommaZahl;


  eineGleitkommaZahl = double.tryParse('3.678');
  eineGanzeZahl = int.tryParse('22');
 
  print(eineGleitkommaZahl); 
  print(eineGanzeZahl); 
}

Das Ergebnis ist das Gleiche, aber dafür sicherer.

ceilToDouble methode


Die nächste Funktion die in beiden Klassen vorhanden ist. Hier der Code:

void main() {
  int? eineGanzeZahl = 33;
  double? eineGleitkommaZahl;
  double? eineGleitkommaZahl2;
  double? eineGleitkommaZahl3;


  eineGleitkommaZahl = double.tryParse('63.001')!.ceilToDouble();
  eineGleitkommaZahl2 = int.tryParse('99')!.ceilToDouble();
 
  eineGleitkommaZahl3 = eineGanzeZahl.ceilToDouble();
  
  if (eineGleitkommaZahl is double)
  {print('Das ist eine Gleitkommazahel: ${eineGleitkommaZahl}');}
  if (eineGleitkommaZahl2 is double)
  {print(eineGleitkommaZahl2);} 
  if(eineGleitkommaZahl3 is double){
    print(eineGleitkommaZahl3);
  }
}

Der Code ist ein wenig gewachsen. Im Code oben sehen Sie tryParse zwei mal im Einsatz. Einmal als double Variante, dann als integer Variante.

eineGleitkommaZahl = double.tryParse('63.001')!.ceilToDouble();

Wie ist die Zeile oben zu verstehen ? Wie bereits bekannt wandelt tryParse eine Zeichenkette in eine Zahl um, hier in einen double Wert. Mit dem Ausrufezeichen signalisieren Sie Dart, dass das Ergebnis null Safe ist. Mit .ceilToDouble(..) runden Sie dann das Ergebnis von tryParse auf den nächsten ganzen double Wert auf, der nicht kleiner sein darf als '63.001', also auf 64

Die integer Variante macht im Prinzip das gleiche. Der wesentliche Unterschied ist, das int.tryParse(..) ja eine integer Variable als Ergebnis hat. Wenn auf dieses Ergebnis .ceilToDouble(..) angewendet wird, dann immer auf eine Zahl ohne Nachkomma Stellen.
Im Code oben bedeutet .ceilToDouble(..) also: runde auf den nächsten ganzen double Wert, der nicht kleiner als 99 ist. Da keine Nachkomma Stellen vorhanden sind und 99 nicht kleiner als 99 ist, erhalten wir als Ergebnis ? Genau: 99.
In ihrer integer Version ist also ceilToDouble(...) nicht sehr nützlich, außer man möchte auf diese Weise eine integer Variable in einen double Wert wandeln. Für diesen Zweck jedoch, gibt es noch eine andere Möglichkeit. Dazu ein anderes Mal mehr.
Wichtig: eineGleitkommaZahl und eineGleitkommaZahl2 erhalten erst dann ihr Ergebnis, wenn ceilToDouble(..) erfolgreich aufgerufen wurde. Der Nachteil dieses Vorgehens: das direkte Resultat von tryParse wird so nicht gespeichert.

Die dritte Variante wendet ceilToDouble(..) direkt auf ein integer Variable an. Wie bei der oben bereits besprochenen integer Variante, erhalten wir aus den gleichen Gründen 33 als Rückgabe Wert. 

Für den Druck in die Konsole verwendet der Code if Konstrukte. Mit Variable is typ können wir in Dart den Variablen Typen prüfen.
Das war es für diese mal. Bis bald !


Kommentare

Beliebte Posts aus diesem Blog

Material Design in Flutter Teil 2

Flutter -- ohne Dart geht es nicht 2 -- einfache Variablen Typen

Flutter -- Tutorial Teil 6 Provider Part 2