Erstellen von Float- und Double-Variablen in VEXcode Pro V5

Typen, die Zahlen mit Dezimalstellen enthalten – float, double

Diese Datentypen werden oft als Gleitkomma-Datentypen bezeichnet. Die Zahlen werden als Gleitkommazahlen bezeichnet.

Schwimmer fvar = 50,15;
double dvar = 50.0;

Vergleichen Sie den Gleitkomma-Datentyp – float und double

Der Unterschied zwischen einem Float- und einem Double-Datentyp liegt in der Genauigkeit der Anzahl der Dezimalstellen.

Basierend auf der VexOS – ARM 7-Spezifikationkann float 6 oder 7 Stellen und Double 15 oder 16 . verarbeiten .

float: In den aktuellen V5os scheint der Controller eine Genauigkeit von bis zu 8 Dezimalstellen zuzulassen.

z.B.

Schwimmer fvar1 = 1,12345670;
float fvar2 = 1.12345678;

fval1 ist der Unterschied zu fvar2,

vs.

Schwimmer fvar1 = 1,123456780; 
float fvar2 = 1,123456781;

fval1 wird wie fvar2 ausgewertet.

double: erlaubt eine Genauigkeit von bis zu 17 Dezimalstellen.

z.B.

doppeltes dvar1 = 1,12345678912345678;
doppeltes dvar2 = 1,12345678912345670;

dval1 unterscheidet sich von dvar2,

vs.

doppeltes dvar1 = 1,123456789123456789;
doppeltes dvar2 = 1,123456789123456780;

dval1 wird wie dvar2 ausgewertet.


Verwenden Sie nicht "double", es sei denn, Sie benötigen eine hohe Präzision

Es gibt zwei Gründe, warum Sie "double" nicht verwenden sollten, es sei denn, Sie benötigen eine hohe Präzision:

  1. Es nimmt 2X Float-Typ auf.
  2. Es braucht viel mehr Rechenleistung.

Basierend auf der VexOS – ARM 7-Spezifikationkann ein Float 6 oder 7 Stellen und ein Double 15 . verarbeiten oder 16. In beiden Fällen sollten Sie sich nicht auf die Genauigkeit der letzten Ziffern in Double oder Float verlassen. Es wird ganz anders gespeichert als das Speichern eines "int" aufgrund einer sogenannten "Float-Point-Berechnung" (was den Rahmen dieses Artikels sprengt).

Dadurch können Sie möglicherweise die Genauigkeit der letzten Nachkommastellen verlieren.

Der Vorgang mit double ist im Vergleich zu float ziemlich kostspielig und viel höher als "integer" aufgrund sogenannter Gleitkommaberechnungen.

Basierend auf dem IEEE-Standard liegt Folgendes in einem zuverlässigeren Bereich.

Typ Kleinster positiver Wert Größter positiver Wert # der Präzision
schweben 10 -38 x 1,17549 10 38 x 3,40282 6-stellig
doppelt 10 -308 oder 2.22507 10 308 x 1.79769 15 Stellen

Können Sie primitive Datentypen austauschen? - Gießen

Es ist möglich, Datentypen auszutauschen. Diese Technik wird „Casting“ genannt. Gießen ist zwar eine ziemlich gängige Praxis, aber tun Sie dies nur, wenn es notwendig ist.

Eine der gängigsten Praktiken ist der Austausch von char und int.

Dies liegt daran, dass beide mit einer Ausnahme ganzzahlige Werte darstellen:

  • „int“ enthält 4 Bytes (oder 8 Bytes in einigen Compilern)
  • „char“ enthält nur 1 Byte.

Also z.B.

char aVal = 100;
int iVal = aVal; // implizites Casting

oder

int iVal = (char) aVal; // explizites Casting.

Achtung bei impliziter Kürzung:

z.B.

codenippet3.png

Eine andere gängige Praxis ist der Austausch von int und float
Schwimmer fVal = 5,486;
Gleitkommabruch = fVal - (int)fVal; // es tut: 5.486 - 5

Achtung bei impliziter Kürzung:

z.B.

int iVal = 50;
float fVal = iVal / 100;

jetzt fVal = 0.0, NICHT 0.5.

Es ist absolut in Ordnung, die implizite Kürzung zu nutzen, die in einigen Szenarien oft ein wichtiger Bestandteil des Betriebs ist. Sie müssen jedoch sicherstellen, dass Sie diese Technik absichtlich verwenden.

Wenn Sie keine implizite Kürzung wünschen, müssen Sie ein explizites Casting durchführen:

  • implizites Casting: float fVal = iVal / 100.0;
  • explizites Casting: float fVal = (float) iVal / 100

For more information, help, and tips, check out the many resources at VEX Professional Development Plus