Problème du modulo#
- Changement de l’affichage des float : précision à 1 chiffre après la virgule automatique
Modulo ne retourne pas un entier#
let ThirdGroupByte = mod(div(RelativeClusterIndex, nbClusterPerGroup), 256)
let GroupCidr = "10.0.\(ThirdGroupByte).0/24"
Cue 0.4 GroupCidr = "10.0.128.0/24"
Cue 0.7 GroupCidr = "10.0.128.0.0/24"
Non ce n’est pas IPv5
Explication#
- les fonctions mod, div, etc (toutes les fonctions de Math en go/cue) retournent un float.
- En cue 0.4, l’interpolation retour la valeur la plus courte "2.5 → 2.5" mais "2.0 → 2" et "0 → 0"
- En cue 0.7, l’interpolation retour la valeur avec une précision de 1 nombre après la virgule (il me semble) "2.5 → 2.5" mais "2.0 → 2.0" et "0 → 0.0"
Solution#
On fait la conversion en string manuellement.
let ThirdGroupByte = mod(div(RelativeClusterIndex, nbClusterPerGroup), 256)
let StrThirdGroupByte = strconv.FormatFloat(ThirdGroupByte, 102, 0, 64)
let GroupCidr = "10.0.\(ThirdGroupByte).0/24"
Précision : la syntaxe normale est strconv.FormatFloat(ThirdGroupByte, 'f', 0, 64), mais le paramètre 'f' est transformé en bytes au lieu de int à cause de cue.
NB : Ce bug est corrigé dans cue 0.8.0