|
Site |
Cours VB.net |
|
|
|
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:
Integer (entier signé)
Short (entier court signé)
Long (Entier long signé)
Byte (entier non signé de valeur 0 à 255)
Mais aussi en VB2005
UInteger (entier non signé)
UShort (entier court non signé)
ULong (Entier long non signé)
SByte (entier signé)
mais aussi, elle peut être fractionnaire.
Single (virgule flottante simple précision)
Double (virgule flottante double précision)
Decimal (virgule fixe haute précision)
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 IntegerLabel1.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?
Si on affecte à une variable entière une valeur supérieure à .MaxValue cela déclenche une erreur (on dit une exception de type OverFlow) et cela plante.
Si on affecte à une valeur à virgule flottante(un Single par exemple), une valeur supérieure à .MaxValue, la variable prend la valeur 'infinie' ( +ou - infinie: Single.NegativeInfinity ou Single.PositiveInfinity))
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
|
|
|
|
|