D'abord je pense que ton référentiel est un peu faussé.Shalmeneser wrote: ↑Fri Apr 30, 2021 2:47 pm Pourquoi cette différence de fonctionnement pour %a :
* Freecad : valeur avec au moins un chiffre après la virgule + l'unité
* Autre : hexadécimal en minuscule
Dans les languages C/C++/Java, %a n'est pas particulièrement l'hexadecimal (qui est %x) mais la représentation en hexadecimal des nombres décimaux. Ce qui avouons le n'est jamais affiché pour l'utilisateur mais seulement pour le programmeur.
FreeCAD utilise Python pour l'interprétation des fonctions de formule, et utilise donc le %a de Python :
Attention à la subtilité pour ceux qui joue avec ça : si on fait '%.Nf', N représente le nombre de décimales, mais si on fait '%.Ng', N représente le nombre de chiffres significatifs.%a will give the equivalent of repr(some_obj).encode('ascii', 'backslashreplace') on the interpolated value. Use cases include developing a new protocol and writing landmarks into the stream; debugging data going into an existing protocol to see if the problem is the protocol itself or bad data; a fall-back for a serialization format; or any situation where defining __bytes__ would not be appropriate but a readable/informative representation is needed