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.
Types qui contiennent des nombres avec des décimales – float, double
Ces types de données sont souvent appelés types de données à virgule flottante. Les nombres sont appelés nombres à virgule flottante.
flottant fvar = 50,15 ; double dvar = 50,0 ;
Comparer les types de données à virgule flottante – float et double
La différence entre un type de données float et double réside dans la précision du nombre de décimales.
Basé sur la spécification VexOS – ARM 7, float peut gérer 6 ou 7 places, et double peut en gérer 15 ou 16.
float: dans le V5os actuel, le contrôleur semble autoriser jusqu'à 8 décimales de précision.
par exemple
flotteur fvar1 = 1,12345670 ; flottant fvar2 = 1,12345678 ;
fval1 est différent de fvar2,
contre
flotteur fvar1 = 1,123456780 ; flottant fvar2 = 1,123456781 ;
fval1 sera évalué de la même manière que fvar2.
double: permet jusqu'à 17 décimales de précision.
par exemple
double dvar1 = 1,12345678912345678 ; double dvar2 = 1,12345678912345670 ;
dval1 est différent de dvar2,
contre
double dvar1 = 1,123456789123456789 ; double dvar2 = 1,123456789123456780 ;
dval1 sera évalué de la même manière que dvar2.
N'utilisez pas « double » à moins que vous n'ayez besoin d'une grande précision
Il y a deux raisons pour lesquelles vous ne devriez pas utiliser « double » sauf si vous avez besoin d'une haute précision :
- Il prend le type float 2X.
- Cela nécessite une puissance de traitement beaucoup plus élevée.
Basé sur la spécification VexOS – ARM 7, un flotteur peut faire 6 ou 7 places, et un double peut en gérer 15 ou 16. Dans les deux cas, vous ne devez pas vous fier à l’exactitude des derniers chiffres en double ou en float. Il est stocké très différemment du stockage d'un « int » en raison de ce qu'on appelle le « calcul à virgule flottante » (qui sort du cadre de cet article).
Ainsi, vous risquez de perdre la précision aux dernières décimales.
L'opération sur double est assez coûteuse par rapport à celle sur flotteur, et bien supérieure à celle sur « entier » en raison de ce qu'on appelle les calculs à virgule flottante.
Basé sur la norme IEEE, les valeurs suivantes se situent dans une plage plus fiable.
| Taper | La plus petite valeur positive | La plus grande valeur positive | # de précision |
|---|---|---|---|
| flotter | 10 -38 x 1,17549 | 10 38 x 3.40282 | 6 chiffres |
| double | 10 -308 ou 2,22507 | 10 308 x 1,79769 | 15 chiffres |
Pouvez-vous échanger des types de données primitifs ? - Coulée
Il est possible d'échanger des types de données. Cette technique est appelée « Casting ». Bien que le casting soit une pratique plutôt courante, ne le faites que si cela est nécessaire.
L’une des pratiques les plus courantes consiste à échanger char et int.
En effet, ils représentent tous deux des valeurs entières à une exception près :
- "int" contient 4 octets (ou 8 octets dans certains compilateurs)
- « char » ne contient qu'un seul octet.
Alors, par exemple
char aVal = 100 ; int iVal = aVal ; // casting implicite
ou
int iVal = (char) aVal; // casting explicite.
Attention à la troncature implicite :
par exemple
Une autre pratique courante consiste à échanger des int et des float
flottant fVal = 5,486 ; fraction flottante = fVal - (int)fVal ; //c'est le cas : 5,486 - 5
Attention à la troncature implicite :
par exemple
int iVal = 50 ; flottant fVal = iVal / 100 ;
maintenant fVal = 0,0, PAS 0,5.
Il est tout à fait possible de tirer parti de la troncature implicite, qui constitue souvent une partie importante des opérations dans certains scénarios. Cependant, vous devez vous assurer que vous utilisez cette technique dès la conception.
Si vous ne souhaitez pas qu'une troncature implicite ait lieu, vous devez effectuer un casting explicite :
- casting implicite :
float fVal = iVal / 100.0 ; - casting explicite :
float fVal = (float) iVal / 100