Site:  Cours VB.net  
1.6.2 Variables numériques.

       4815162342

Une variable numérique peut contenir des données numériques.

On a vu qu'une variable numérique peut être entière:

Mais aussi en VB2005

mais aussi, elle peut être fractionnaire.

 

On déclare une variable numérique avec Dim, on peut l’initialiser en même temps :

Dim i As Integer= 3

 

Si la variable est numérique, il faut la transformer en String avant de l’afficher :

Dim I As Integer=12

Label.text = I.ToString

 

.ToString fait partie des méthodes. Il y en a d'autres:

.GetType retourne le type de la variable

Dim i As Integer

Label1.Text = i.GetType.ToString  'Affiche: System.Int32

.MaxValue .MinValue donne le plus grand et le plus petit nombre possible dans le type de la variable.

 

On verra qu’on peut utiliser des opérateurs  + - * / .

Dim i As Integer=2    'Je déclare la variable i et je l'initialise à 2

Dim j As Integer

j=i+3 ‘ j est égal à 5 car on affecte à j la valeur i+3

 

On rappelle que le séparateur pour un littéral est le point :

j=1.2   veut dire  j=1,2 en bon français !!

de même pour Str et Val du VisualBasic.

Par contre pour les instructions du Framework (CType, TryCaste, Cint...), le séparateur est celui de la culture (',' en culture française, '.' en culture us.

 

La Classe MATH du Framework est disponible:

Pour qu'elle soit disponible il faut d’abord importer l’espace de nom  'Math'du FrameWork :

Pour cela il faut taper en haut de la fenêtre (au dessus de public Class)

Imports System.Math

Si on n'a pas importé  il faut ajouter Math. avant le nom de a fonction. Exemple: R=Math.Abs(N) 

On verra plus loin ce que cela signifie.

 

Dim N As Single

Dim R As Single

 

R=Abs(N)    retourne la valeur absolu

            Si N=-1.2  R=1.2

R=Sign(N)   retourne le signe

            Si N=-1.2  R=-1 (négatif) ; retourne 1 si nombre positif

 

R=Round(N)  retourne le nombre entier le plus proche

             N=1.7     R=2

             N=1.2     R=1

             N=1.5     R=2

On peut donner en second paramètre le nombre de digit: Math.Round(Valeur, 2)donne 2 décimales après la virgule.

 

Comment arrondir les centimes d' Euros (comme dans les comptabilités et les feuilles d'impôt.)

Si nombre <0.5 retourne 0 ;si  > ou = à 0.5  retourne 1; c'est la manière d'arrondir les nombres  en Euros, comme sur la feuille d'impôts.

On peut donner en second paramètre le nombre de digit:Valeur= Math.Round(Valeur, 2)donne 2 décimales après la virgule.

 

 

 

R=Truncate(N)  retourne la partie entière entier (enlève les chiffres après la virgule, arrondi à l'entier le plus proche en allant vers zéro))

              N=1.7     R=1

 

 

R=Floor(N)  retourne le plus grand entier égal ou inférieur.(arrondi à l'entier inférieur le plus proche en allant vers l'infini négatif)

             N=1.7     R=1

 

R=Ceiling(N)  retourne le plus petit entier égal ou supérieur.(arrondi à l'entier  supérieur le plus propre en allant vers l'infini positif)

             N=1.2     R=2

R=Max(2,3)  retourne le plus grand des 2 nombres.

            retourne 3

R=Min(2,3)  retourne le plus petit des 2 nombres.

            retourne 2

R=Pow(2,3)  retourne  2 puissance 3.

            retourne 8

R=Sqrt(9)   retourne la racine carré.

            retourne 3

longResult = Math.BigMul(int1, int2) BigMul donne le résultat de la multiplication de 2 entiers sous forme d'un long.
 

intResult = Math.DivRem(int1, int2, Reste) DivRem donne le résultat (intResult) de la division de int1 par int2 et retourne le reste (Reste), cela pour des entiers.

Il existe aussi Log, Log10, Exp.

Bien sur il y a aussi Sin Cos Tan, Sinh Cosh Tanh (pour hyperbolique) Asin Acos Atan Atan2.

Prenons un exemple:

Imports System.Math
Dim MonAngle, MaSecant As Double
MonAngle = 1.3 '  angle en  radians.
MaSecant = 1 / Cos(MonAngle)
' Calcul la sécante.
 

On remarque que les angles sont en radians.

Rappel:2π=360° ; Angle en radians= (2π/360)*Angle en degrés

 

Il existe aussi les instructions du langage Visual Basic comme:

Int et Fix qui suppriment toutes deux la partie fractionnelle et retournent l'entier .

Dim R As Single= 1.7

Int(R)    ‘retourne 1

 

Si le nombre est négatif, Int retourne le premier entier négatif inférieur ou égal au nombre, alors que Fix retourne le premier entier négatif supérieur ou égal au nombre. Par exemple, Int convertit -8,4 en -9 et Fix convertit -8,4 en -8.

 

Dépassement de capacité, 'Non Nombre'.

Testé en VB2005

On a vu que, codées sur un nombre de bits défini, les variables numériques ne peuvent pas avoir des valeurs très très grandes. .MaxValue  donne le plus grand nombre possible dans le type de la variable. (MinValue le plus petit nombre posible) Que se passe t-il , si on dépasse la valeur maximum?

 

IsInfinity, IsNegativeInfinity, IsPositiveInfinity permettent de tester si le résultat d'un calcul dépasse les valeurs autorisées pour le Type virgule flottante.

Exemple:

Dim s As Single = 2147483647 ^ 33

If Single.IsInfinity(s) Then MsgBox("infinie")

 

s prend la valeur Single.PositiveInfinity

 

Les opérations en virgule flottante retournent NaN pour signaler que le résultat de l'opération est non défini. Par exemple, le résultat de la division de 0,0 par 0,0 est NaN.

On peut tester une expression par IsNan

Exemple:

If Single.IsNaN(0 / 0) Then