Accueil





Diviser une quantité en parties



Permet de diviser à peu près n'importe quelle quantité en sous-unités, comme par exemple un poids exprimé en grammes peut être divisé en tonnes, kg et grammes.

L'argument lead indique si vous voulez ou non que les unités nulles se trouvant avant les unités non-nulles soient conservées.
L'argument trail indique si vous voulez ou non que les unités nulles se trouvant après les unités non-nulles soient conservées.

Source : http://wiki.tcl.tk/19806.


Procédure
proc split_amount {amount dividers {lead 0} {trail 0}} { set result {} foreach {unit divider} $dividers { if { !$lead && ($amount==0) } { break } if { $divider eq {} } { set result "$amount$unit $result" break } if { $trail || !($amount % $divider == 0) } { set result "[expr {$amount % $divider}]$unit $result" } set amount [expr {$amount / $divider}] } return $result }


Exemples
split_amount 2234141 {g 1000 kg 1000 t} Tcl: 2t 234kg 141g
split_amount 44565454 {mm 10 cm 100 m 1000 km} Tcl: 44km 565m 45cm 4mm
split_amount 40000 {mm 10 cm 100 m 1000 km} Tcl: 40m
split_amount 40000 {mm 10 cm 100 m 1000 km} 1 0 Tcl: 0km 40m
split_amount 40000 {mm 10 cm 100 m 1000 km} 0 1 Tcl: 40m 0cm 0mm
split_amount 40000 {mm 10 cm 100 m 1000 km} 1 1 Tcl: 0km 40m 0cm 0mm
split_amount [clock seconds] {s 60 mn 60 h 24 j 365 a} Tcl: 45a 351j 18h 23m 7s
split_amount [clock seconds] {" secondes" 60 " minutes et" 60 " heures," 24 " jours," 365 " ans,"} Tcl: 45 ans, 351 jours, 18 heures, 24 minutes et 48 secondes


©2005-2016 Menz Agitat