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

The VEX Visual Studio Code Extension has replaced VEXcode Pro V5, which is now end-of-life.

VEXcode Blocks and VEXcode Text remain actively developed and supported for all VEX platforms.

Typen, die Zahlen mit Dezimalstellen enthalten – Float, Double

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

float fvar = 50,15;
Doppel-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 verarbeiten und Double 15 oder 16.

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

z.B

float fvar1 = 1.12345670;
float fvar2 = 1.12345678;

fval1 unterscheidet sich von fvar2,

vs

float fvar1 = 1.123456780; 
float fvar2 = 1.123456781;

fval1 wird genauso ausgewertet wie fvar2.

double: ermöglicht eine Genauigkeit von bis zu 17 Dezimalstellen.

z.B

double dvar1 = 1.12345678912345678;
double dvar2 = 1.12345678912345670;

dval1 unterscheidet sich von dvar2,

vs

double dvar1 = 1.123456789123456789;
double dvar2 = 1.123456789123456780;

dval1 wird genauso ausgewertet wie dvar2.


Verwenden Sie „double“ nicht, 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 den 2X-Float-Typ auf.
  2. Es beansprucht viel mehr Rechenleistung.

Basierend auf der VexOS- ARM 7-Spezifikationkann ein Float 6 oder 7 Stellen einnehmen und ein Double 15 oder 16. In beiden Fällen sollten Sie sich nicht auf die Genauigkeit der letzten Ziffern in Double oder Float verlassen. Aufgrund der sogenannten „Gleitkommaberechnung“ (die außerhalb des Rahmens dieses Artikels liegt) unterscheidet sich die Speicherung deutlich von der Speicherung eines „int“.

Daher kann es sein, dass die Genauigkeit bei den letzten paar Dezimalstellen verloren geht.

Die Operation mit Double ist im Vergleich zu Float recht kostspielig und aufgrund sogenannter Gleitkommaberechnungen viel teurer als mit „Integer“.

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

Typ Kleinster positiver Wert Größter positiver Wert Anzahl der Präzision
schweben 10 -38 x 1.17549 10 38 x 3.40282 6 Ziffern
doppelt 10 -308 oder 2.22507 10 308 x 1.79769 15 Ziffern

Können primitive Datentypen ausgetauscht werden? - Casting

Es ist möglich, Datentypen auszutauschen. Diese Technik wird „Casting“ genannt. Auch wenn das Gießen eine weit verbreitete Praxis ist, sollten Sie dies nur tun, wenn es notwendig ist. 

Eine der gängigsten Vorgehensweisen 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

codesnippet3.png

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

Achtung bei impliziter Kürzung:

z.B

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

jetzt ist fVal = 0,0, NICHT 0,5.

Es ist absolut in Ordnung, die implizite Kürzung auszunutzen, die in manchen Szenarien häufig ein wichtiger Bestandteil von Vorgängen ist. Sie müssen jedoch sicherstellen, dass Sie diese Technik absichtlich verwenden.

Wenn Sie keine implizite Kürzung wünschen, müssen Sie eine explizite Umwandlung 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

Last Updated: