version 2004.2 (Modifiée)
Note préliminaire
Si vous ne faites pas de développement multi-plate-forme, vous pouvez tout simplement ignorer cette section.
Dans le monde de l'informatique, l'arithmétique des nombres décimaux tient plus de la technologie que de la science exacte. Vous avez avez appris en classe, par exemple, qu'un tiers peut être écrit comme une suite infinie de 3 après la virgule. Un ordinateur, quant à lui, ne le sait pas mais doit cependant évaluer cette expression. De la même manière, vous savez que trois tiers sont égal à un ; l'ordinateur calculera l'expression pour obtenir le résultat. Suivant le type d'ordinateur que vous utilisez, un tiers sera évalué comme un nombre fini de trois après la virgule. Ce nombre est appelé la précision de la machine.
Sur les anciens Macintosh à base de processeur 68K, ce nombre est égal à 19 ; cela signifie qu'un tiers sera évalué avec 19 chiffres significatifs. Sous Windows ou sur une machine à base de PowerPC, ce chiffre est égal à 15 ; cela signifie qu'un tiers sera évalué avec 15 chiffres significatifs. Si vous affichez la valeur 1/3 dans le débogueur de 4D, vous obtiendrez 0,3333333333333333333 sur les Macintosh à base de processeur 68K et environ 0,3333333333333333148 sous Windows ou sur une machine à base de processeur PowerPC. Il est à noter que les trois derniers chiffres sont différents car la précision des Macintosh à base de 68K est supérieure à celle des PC ou des machines à base de PowerPC. Cependant, si vous affichez l'expression (1/3)*3 vous obtenez 1 sur tous ces types de machines.
Si vos calculs décimaux se rapportent au nombre de mètres carrés de votre jardin, il est probable que vous n'aurez qu'un besoin très relatif des chiffres après la virgule. D'un autre côté, si vous remplissez une déclaration d'impôts, vous pouvez à certains moments vous sentir plus concerné par la précision de votre ordinateur. Cependant, une précision de 15 ou 19 est suffisante, même pour gérer des milliards de francs de revenus !
Pourquoi la valeur 1/3 semble-t-elle différente entre des Macintosh à base de processeur 68K et des machines Windows ou à base de PowerPC ?
Sur les Macintosh à base de processeur 68K, le système d'exploitation stocke les nombres réels sur 10 octets (80 bits), alors que sur un PC ou un Power Macintosh les nombres réels sont stockés sur 8 octets (64 bits). C'est pour cette raison que les nombres réels ont jusqu'à 19 chiffres significatifs sur des Macintosh à base de processeur 68K et jusqu'à 15 chiffres significatifs sur PC et Power Macintosh.
Pourquoi l'expression (1/3)*3 retourne-t-elle 1 sur ces trois types de machines ?
Un ordinateur ne peut faire que des calculs approximatifs. Par conséquent, lorsqu'il compare ou calcule des nombres, il ne traite pas les nombres réels comme des éléments mathématiques mais comme des valeurs approximatives. Dans l'exemple évoqué plus haut, 0,3333... multiplié par 3 est égal à 0,9999..., cette valeur est tellement proche de 1 que la machine considère que le résultat est égal à 1. Pour plus d'informations sur ce point, reportez vous à la commande FIXER NIVEAU COMPARAISON REEL.
Une distinction doit être établie entre :
La manière dont les nombres réels sont calculés et comparés,
La manière dont les nombres réels sont affichés à l'écran (ou imprimés).
A l'origine, 4D manipulait les nombres réels à l'aide du type standard de 10 octets correspondant au système d'exploitation des Macintosh 68K. De ce fait, les valeurs réelles sauvegardées sur disque sont sauvegardées dans ce format. Afin de maintenir une compatibilité entre toutes les versions (Windows, Power Macintosh et Macintosh) de 4D, les fichiers de données utilisent toujours le même type de format de 10 octets. Comme les calculs internes sont réalisés sur 8 octets pour les versions PC et Power Macintosh, 4D convertit en interne les valeurs de 10 à 8 octets, ou inversement. De ce fait, si vous chargez un enregistrement sous Windows ou sur une machine à base de PowerPC, et que cet enregistrement contient des valeurs réelles qui ont été sauvegardées sur une machine à base de processeur 68K, il est possible de perdre de la précision (en passant de 19 à 15 chiffres significatifs). Si vous chargez un enregistrement sur un Macintosh à base de processeur 68K et que cet enregistrement contient des valeurs réelles créées ou stockées sur une machine Windows ou à base de processeur PowerPC, il n'y aura aucune perte de précision. De manière générale, si vous utilisez une base de données sur des machines à base de processeur 68K, PowerPC ou une machine Windows, comptez sur une précision de 15 et non 19 chiffres.
A l'aide de la commande FIXER PARAMETRE BASE, vous pouvez définir le nombre de chiffres qui doivent être ignorés pour l'affichage des nombres réels à l'écran (4 par défaut).