LoriotPro Extended Edition Documentation language LUA

TDM


Les nombres en LUA


Représentation interne

Les languages de programmation supportent en général plusieurs types de nombres : Nombre entier, nombre entier précision illimitée, virgule flottante de précision simple, virgule flottante de double précision, nombres complexes.

Dans un intérêt de simplicité LUA supporte un seul type de nombre, le nombres à virgule flottante. Par défaut ce sont des nombres à virgule flottante de double précision, mais Lua peut facilement être recompilé pour soutenir des nombres de virgule flottante de précision simple si vous le souhaitez.

Quelques points au sujet (IEEE 754) de double virgule flottante 64-bit CONTRE les ints de 32 bits :

  • Le double virgule flottante 64-bit peut représenter beaucoup plus de nombres entiers et avec précision.
  • En fait, tout interne peut représenter, double peut représenter, avec précision.
  • Chaque résultat que l'arithmétique de nombre entier peut calculer correctement et avec précision, double arithmétique peut calculer correctement et avec précision.
  • Puissance de dix : un double 64-bit peut représenter tous les nombres entiers avec précision, jusqu'à : 1.000.000.000.000.000 (réellement -2^53... +2^53).
  • Puissance de de dix : un entier de 32 bits représente tous les nombres entiers avec précision, jusqu'à : 1.000.000.000 (réellement -2^32... +2^32-1).
  • Utiliser les nombres

    Nous pouvons utiliser LUA en ligne de commande interactive comme calculatrice et executer des expression par exemple,

    Copyright de Lua 5.0 (c) 1994-2003 Tecgraf, PUC-Rio

    > = 1
    1
    > = 1 + 2
    3
    > = 3.1415927
    3.1415927
    >= 5/6
    0.83333333333333

    Nous pouvons écrire des nombres et évaluer des calculs simples. Lua peut également comprendre des types d'exposant pour exprimer des nombres sous la forme la < valeur > * 10 ^ < exposant >

    > = 1.2345e6
    1234500
    > = 543.21E8
    54321000000
    > = 2.56e-4
    0.000256

    Nous pouvons affecter des nombres aux variables et faire l'arithmétique :

    > largeur = 7.5
    > taille = 12.7
    > = largeur * taille
    95.25
    > profondeur = 2.8
    > secteur = largeur * taille
    > volume = secteur * profondeur
    > print(area, volume)
    95.25 266.7

    La bibliothèque de maths

    Lua est équipé d'une bibliothèque de maths. Les fonctions fournies sont comme suit :

    math.abs math.acos math.asin math.abronzage math.atan2 math.ceil math.cos math.deg math.exp math.floor math.log math.log10 math.max math.min math.mod math.pow math.rad math.sin math.sqrt math.tan math.frexp math.ldexp math.random math.randomseed

    Nous essayerons quelques unes des fonctions et des variables comme exemple.

    > = math.sqrt(101)
    10.049875621121
    > = math.pi
    3.1415926535898
    > = math.sin(math.pi/3)
    0.86602540378444

    Lisez Fonctions Mathématiques pour plus de détails.

    Conversion

    Vous pouvez convertir des chaînes de caractères en nombres en utilisant la fonction tonumber(). Ceci prend un argument chaînes de caractères et renvoie un nombre.

    > = tonumber("123") + 25
    148
    >x = tonumber("123.456e5")
    >print(x)
    12345600

    Coercition

    Lua convertira automatiquement des types chaînes de caractères et de nombre en format correct afin d'exécuter des calculs. Par exemple, si vous essayez de vous appliquer une opération arithmétique à une chaînes de caractères, Lua essayera de convertir cette chaînes de caractères en nombre d'abord, autrement l'opération ne fonctionnera pas. Si la chaînes de caractères ne peut pas être convertie en nombre une erreur est retorunée. Cette conversion automatique des types s'appelle la coercition.

    > = 100 + "7"
    107
    > = "1000" + 234
    1234
    > = "hello" + 234
    stdin:1 : tentative d'exécuter l'arithmétique sur une chaînes de caractères
    traceback de la pile :
    stdin:1 : dans la "chunk" principal
    [ C ] : ?
    > = 234 + "1000"
    1234

    Vous pouvez voir où une chaînes de caractères peut être convertie en nombre, le calcul réussit. La chaînes de caractères "hello" ne peut pas être convertie en nombre et ainsi une erreur se produit. Dans des langues de typage statique(par exemple C) ceci causerait une erreur car vous ne pouvez pas assigner une valeur à une variable d'un type incompatible. Ceci fonctionne dans Lua parce qu'il est typé dynamiquement. Nous pouvons employer la fonction de Lua type() pour obtenir une description du type d'un objet particulier.

    > x = "123" -- une chaînes de caractères (string)
    > print(x, type(x)) -- affiche la valeur de x et son type
    123 string
    > x = x + 7 -- ajoutez un nombre à la une chaînes de caractères et force la coercition
    > print(x, type(x)) -- affiche la valeur et le type 130 nombre
    130 nombre


    www.loriotpro.com