Franco268 Posté(e) le 11 avril 2021 Signaler Posté(e) le 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 ?
Lazer Posté(e) le 12 avril 2021 Signaler Posté(e) le 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
Cardane Posté(e) le 12 avril 2021 Signaler Posté(e) le 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.
jang Posté(e) le 12 avril 2021 Signaler Posté(e) le 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
Franco268 Posté(e) le 12 avril 2021 Auteur Signaler Posté(e) le 12 avril 2021 Merci pour vos réponses!
Messages recommandés