Franco268 7 Signaler ce message Posté(e) 11 avril 2021 Hello, heure = 1 heure = heure + 1 self:debug("heure: " ..heure) Mon debug m'affiche 2.0 Même si je met un tostring() Est ce normal? Il faut vraiment que je traite la variable pour enlever le .0 Est il possible de déclarer ma variable en integer pour ne pas avoir ce .0 ? Partager ce message Lien à poster Partager sur d’autres sites
Lazer 8 486 Signaler ce message Posté(e) 12 avril 2021 Je crois que c'est une des nouveautés du LUA 5.3, les nombres sont traités en number, et il existe le type integer à part. Le souci c'est que même si tu utilises des integer, LUA va automatiquement les convertir en number dès que tu feras une opération mathématique dessus. Et il n'est pas possible de caster les variables comme on le fait sur d'autres langages. ça m'avait bien surpris au début lors de mes premières migrations de codes LUA depuis la HC2 vers la HC3. Il faut que tu prennes l'habitude de formater tes nombres quand tu veux les afficher (dans le log, dans un label, etc..), avec string.format() Exemple pour un nombre entier : self:debug(string.format("heure : %d", heure)) Autrement, tu peux aussi te créer ta propre fonction générique round(), vu que LUA n'en propose pas nativement. Perso elle est incluse dans ma "librairie" d'outils que j'utilise dans tous mes développements de QuickApps. Exemple : -- -- Round number to specified decimal -- -- Usage : -- local entier = round(123.456, 0) -- local decimal = round(123.456, 1) -- function round(num, idp) local mult = 10 ^ (idp or 0) return math.floor(num * mult + 0.5) / mult end 1 Partager ce message Lien à poster Partager sur d’autres sites
Cardane 268 Signaler ce message Posté(e) 12 avril 2021 @Lazer oui effectivement c'est arrivé avec la version 5.3 de LUA, mais juste dommage qu'ils n'aient pas ajouté une possibilité de faire un cast sur un INT, et une fonction toInt(), ca éviterait de devoir chaque fois convertir. Partager ce message Lien à poster Partager sur d’autres sites
jang 225 Signaler ce message Posté(e) 12 avril 2021 print(_VERSION) hour = 1 hour = hour + 1 print ("hour:".. hour) hour = hour + "1" print ("hour:".. hour) a = 1 b = 2.0 print("Type a:",type(a)) print("Type b:",type(b)) print("math.type a:",math.type(a)) print("math.type b:",math.type(b)) a = 3.0 b = 3.1 print("tointeger a:",math.tointeger(a)) print("tointeger b:",math.tointeger(b)) Lua 5.3 hour:2 hour:3.0 Type a: number Type b: number math.type a: integer math.type b: float tointeger a: 3 tointeger b: nil http://www.lua.org/manual/5.3/manual.html#pdf-math.tointeger 5 Partager ce message Lien à poster Partager sur d’autres sites
Franco268 7 Signaler ce message Posté(e) 12 avril 2021 Merci pour vos réponses! Partager ce message Lien à poster Partager sur d’autres sites