Page d'Accueil

Nombres à point flottant

 

Introduction

Comme vu dans la leçon 2, pour soutenir des nombres à point flottant, vous pouvez utiliser les types de données float, double, ou  décimaux. Le type de données de float de C# provient de la structure simple du .NET Framework. Le type de données double est basé sur la double structure du .NET Framework. Le type de données décimal de C# est un type défini de la structure décimale du .NET Framework. Pour déclarer une variable à point flottant, vous pouvez utiliser un de ces types de données et l'initialiser.

 

En initialisant une variable à point flottant, vous devriez vous assurer de lui assigner une valeur qui peut s'adapter à la quantité de mémoire qui lui est assignée. Comme mentionné pour les types de données nombre entier, la valeur minimum qu'une variable float peut contenir est représentée par la constante MinValue de la structure simple et du champ MinValue de la structure double. La valeur maximum qu'une variable float ou double peut contenir est appelée MaxValue.

Après la déclaration et l'initialisation d'une variable float ou double, elle devrait contenir une valeur appropriée. Si vous obtenez la valeur variables d'une autre manière, à un moment ou à un autre, vous ne pouvez savoir quelle valeur est stockée dans la mémoire assignée à la variable. En fait, la variable peut contenir une valeur qui n'est pas un nombre. Pour vérifier si la variable contient une valeur qui n'est pas un nombre, vous pouvez accéder à sa constante NaN. Pour ce faire, dactylographier le type de données float ou double, suivi de l'opérateur de période, et suivi de la constante NaN. Voici un exemple :

using System;

class Program
{
    static int Main()
    {
	double number = 0D;

	if( number == double.NaN )
	    Console.WriteLine("The value is not a number");
	return 0;
    }
}

Une autre technique que vous pouvez utiliser pour vérifier cette caractéristique est la méthode IsNaN () de la structure simple ou double.

Opérations sur des nombres à point flottant

En utilisant un nombre entier et un nombre à point flottant, ou alors avec deux nombres à point flottant, vous pouvez effectuer une des opérations arithmétiques courantes telles que l'addition, la soustraction, la multiplication, ou la division. Quand on en vient à la division exécutée sur deux constantes, vous pouvez obtenir un nombre positif ou négatif. Dans des calculs fortement précis, vous pouvez devoir traiter un nombre approximatif dont la valeur exacte n'est pas connue. Par exemple, le plus petit nombre positif s'appelle epsilon. Dans les doubles et simples structures, cette constante est appelée Epsilon. Pour le type simple-précision, epsilon est égal à 1.445. Pour un type à double précision, la constante epsilon est équivalente à 4.94065645841247-324. Comme vous pouvez voir, ce nombre est extrêmement petit.

En traitant avec les nombres réels, quelques opérations produisent des nombres très petits ou très grands. Dans l'algèbre, le plus petit nombre s'appelle l'infini négatif. Dans .NET Framework, l'infini négatif est représenté par une constante appelée NegativeInfinity. Pour accéder à ce nombre, dactylographiez float ou double, suivi d'un opérateur de période, suivi du nom de cette constante. Voici un exemple :

using System;

class Program
{
    static int Main()
    {
	Console.WriteLine("Negative Infinity = {0}",
		          double.NegativeInfinity);
	return 0;
    }
}

Pour découvrir si une variable contient une valeur négative infini, vous pouvez faire appel à la méthode IsNegativeInfinity () de la variable. Les syntaxes de cette méthode sont :

public static bool IsNegativeInfinity(float f);
public static bool IsNegativeInfinity(double d);

A l'autre extrémité, le plus grand nombre possible est appelé infini positif. Cette constante est représentée dans .NET Framework par la valeur PositiveInfinity. Pour accéder à cette constante, dactylographiez float ou double, suivi de la période, suivi du nom de cette constante. Pour découvrir si la valeur d'une variable est un infini positif, vous pouvez faire appel à sa méthode IsPositiveInfinity (). Les syntaxes de cette méthode sont :

public static bool IsPositiveInfinity(float f);
public static bool IsPositiveInfinity(double d);

Pour vérifier si la valeur d'une variable est l'un des infinis, vous pouvez faire appel à sa méthode IsInfinity (). Les syntaxes de cette méthode sont :

public static bool IsInfinity(float f);
public static bool IsInfinity(double d);

Opérations de comparaison

Puisque les nombres à point flottant peuvent être approximatifs, vous devriez faire attention en les comparant, particulièrement pour l'égalité. Considérer les exemples suivants :

using System;

class Program
{
    static int Main()
    {
	double number1 = 22.15D;
	double number2 = 22.15D;

	if( number1 == number2 )
	    Console.WriteLine("The values are equal");
	return 0;
    }
}

Ceci produirait :

The values are equal
Press any key to continue . . .

Pour la discussion, les valeurs de ces variables ont été limitées à 2 positions décimales. Si elles représentaient les salaires horaires des employés, la comparaison serait facilement effectuée et peut produire un résultat exact. Si vous voulez appliquer plus de précision aux nombres, par exemple si les variables représentent des valeurs de poids, vous aurez besoin de plus d'espaces du côté droit du séparateur décimal. Considérer le programme suivant :

using System;

class Program
{
    static int Main()
    {
	double number1 = 22.156D;
	double number2 = 22.157D;

    	if( number1 == number2 )
	    Console.WriteLine("The values are equal"); 
	else
	    Console.WriteLine("The values are NOT equal");
	return 0;
    }
}

Ceci produirait :

The values are NOT equal
Press any key to continue . . .

Cette fois, en raison de plus de précision, les variables ne contiennent pas la même valeur.

En plus de l'égalité, vous pouvez également comparer des variables à point flottant pour découvrir si une valeur est inférieure à l'autre. Pour soutenir de telles opérations, les structures simples et doubles sont équipées d'une méthode appelée CompareTo. Les règles de cette méthode sont fonctionellement identiques que ceux que nous avons passées en revue pour des nombres entiers.

  

Page d'Accueil Copyright © 2007-2008, Yevol