Lua roblox fonctions separation mathematique

Résolu
Drake -  
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   -

Bonjour a tous,

Pour l'un des indicateurs de la centrale nucléaire que je construit sur Roblox j'aurait besoin d'une fonction pouvant couper en deux une valeur, numérateur et dénominateur.

Ex :

Ma valeur est de 34 DONC j'obtiens :

A = 3

B = 4

Si une personne s'y connait en Lua ou en programmation Roblox, je suis preneur, merci.

5 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 583
 

bonjour,

Quel autre résultat souhaites-tu obtenir?  Quelle instruction as-tu utilisé?

0
Drake
 

Actuellement j'ai pensé a quelque chose comme Valeur/10,

Le problème c'est que je n'ai aucune fonction me permettant de demander de garder d'un coté l'unité et de l'autre le chiffre après la virgule.

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 583
 

 3 et 4, c'est ce que tu obtiens, ou ce que tu souhaites obtenir?

Connais-tu l'opérateur Modulus?

0
Drake
 

Modulus non? Et c'est ce que je souhaite obtenir en sortir de l'operation j'entre 34 et il sépart les deux nombres.

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 583
 

Je pense que l'opérateur % va t'aider.

0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 104
 

Salut Drake,

Je ne suis pas expert en Lua, mais une façon de faire est comme cela :

valeur = 34
a = valeur // 10
b = valeur % 10
print("a", a)
print("b", b)

donne :

a	3
b	4

Testé sur https://www.lua.org/cgi-bin/demo

% est l'opérateur modulo que te suggère d'utiliser yg_be. Cet opérateur donne le reste de la division entière et permet d'obtenir l'unité dans ton cas en divisant par 10.

Pour obtenir la dizaine, tu dois obtenir la partie entière seulement avec la division par 10. Tu dois donc utiliser non pas l'opérateur de division /, mais l'opérateur de division entière //.


 

Edit : Il semble donc que Lua dispose bien d'un opérateur de division entière qui rend superflue l'usage d'une fonction d'arrondi, bien que // ne paraisse pas mentionné ici http://www.lua.org/manual/5.2/manual.html#3.4.1

0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 104
 

En fait, si je comprends bien, il semble que l'opérateur // soit une introduction au langage Lua à partir de la version 5.3 selon cette documentation https://www.lua.org/manual/5.3/manual.html#3.4.1 (la version actuelle est Lua 5.4.4).

Avant, il fallait se contenter de / et passer par la fonction mathématique math.floor() pour arrondir et ne garder que l'unité (cf. la doc de Lua 5.2 dont j'avais initialement posté l'URL dans mon premier message), et le code devient :

valeur = 34
a = math.floor(valeur / 10)
b = valeur % 10
print("a", a)
print("b", b)

Si la version de base de Lua utilisée par ton jeu en ligne est antérieure à l'introduction de l'opérateur // tu peux faire comme ci-dessus.

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 583 > [Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention  
 

Peut-être plus simple et plus intuitif:

valeur = 34
b = valeur % 10
a = (valeur - b) / 10
print("a", a)
print("b", b)
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 104 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 

Ce code affiche :

a	3.0
b	4

avec Lua 5.4.4 ...

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Drake
 

Je vous remercie de vos réponses j'essayerai ça demain, en attendant je vous tient au courant et merci beaucoup a vous tous. ^^

0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 104
 

Si ton problème est résolu, peux-tu mettre ton sujet en "résolu" (clique sur les "..." en bas de ton sujet initial).

0