Le 7 mars 2017 sortait GNU Units 2.14. À cette occasion, je vous propose de découvrir cet outil qui n’est pas forcément le plus connu de tous. GNU Units se veut être une sorte de calculatrice centrée sur la gestion des unités. Units vous permet de convertir d’une unité à l’autre, au sein de près de 3 000 unités différentes (en comptant les valeurs monétaires). Il est le descendant de l’outil units développé par Bell Labs, il y a plus de trente ans.
Nouveautés
Depuis 2012, les sorties se font au rythme de un à deux par an, et on a principalement droit à des corrections de bogues, comme c’est le cas avec cette dernière version, ou une mise à jour des valeurs des constantes utilisées, comme en 2014 avec la mise à jour vers les nouvelles valeurs de 2014 CODATA.
Usage
Cet outil s’utilise uniquement en ligne de commande. Voyons un petit exemple :
$ units
Currency exchange rates from www.timegenie.com on 2017-03-20
2982 units, 109 prefixes, 96 nonlinear units
You have: 1GB
You want: MB
* 1000
/ 0.001
Il y a donc bien un millier de mégaoctets dans un gigaoctet. Vérifions le mébioctet :
You have: 1GiB
You want: MiB
* 1024
/ 0.0009765625
Tout va bien. :)
Exemples plus complexes
Il est bien entendu possible de convertir vers des unités plus diverses et d’entremêler de multiples unités. Voici quelques exemples parlants :
You have: 123456 seconds
You want: hms
34 hours + 17 minutes + 36 seconds
# `hms` est une abréviation de `hours;minutes;seconds`
# `time` rajoute les années et les jours si nécessaire, ce qui est plus général
# E = mc², avec 10 kilos
You have: 10 kg * c^2
You want: GJ
* 8.9875518e+08
/ 1.1126501e-09
# Pour voir la définition d’une unité, ici la constante gravitationnelle
You have: G
You want:
Definition: 6.67408e-11 N m^2 / kg^2 = 6.67408e-11 m^3 / kg s^2
# Pour ajouter des valeurs dans différentes unités
You have: 2 ft + 14 cm + 3|8 in
You want: m
* 0.759125
/ 1.3173061
You have: 1.3 kJ + 512 cal
You want: J
* 3443.6416
/ 0.00029039027
Évidemment, on ne peut pas faire n’importe quoi non plus :
You have: 42 cm + 69 N + 13
^
Illegal sum or difference of non-conformable units
Enfin, une conversion monétaire :
You have: 10 euros
You want: yen
* 1214.9
/ 0.00082311301
Mais sachez qu’il est possible de mettre à jour la base de données des valeurs monétaires en lançant units_cur
.
Usage non interactif
units s’utilise plutôt en mode interactif, mais il est possible de le lancer également pour une seule conversion :
$ units '2 liters' gallon
* 0.4399385
/ 2.273045
Conclusion
Tout ceci ne fait qu’effleurer la surface de ce logiciel qui me semble méconnu. Pour plus d’information, je ne peux que vous conseiller de consulter la documentation. Qui sait, peut‐être que définir vos propres unités ou savoir que certaines unités varient en fonction de la langue du système peut s’avérer répondre à vos besoins ?
Aller plus loin
- Site officiel (579 clics)
- Manuel (149 clics)
- Système international d’unités et les sept unités de base (183 clics)
- Proposition de nouvelles définitions du système international d’unités (117 clics)
- Préfixes binaires (kibi‐, mébi‐, gibi‐, tébi‐, pébi‐ et exbi‐) (131 clics)
# Merci de l'info !
Posté par Salamandar . Évalué à 6.
Finis les arrachages de cheveux avec le combo [fdisk parted cryptsetup lvm resize2fs] \o/
# Pas compris
Posté par MCMic (site web personnel) . Évalué à 8.
Je comprends rien à la sortie, c’est quoi le / et le * ?
Le résultat est une multiplication/division à faire nous même ? (dans ce cas à quoi ça sert de donner des valeurs en entrée et pas juste des unités ?)
Même le dernier exemple avec la conversion litre/gallon je comprends pas quel est le résultat.
[^] # Re: Pas compris
Posté par Benoît Laurent (site web personnel) . Évalué à 6.
C'est expliqué au tout début de la doc, Interacting with units :
Ce n'est pas intuitif du tout je trouve.
[^] # Re: Pas compris
Posté par wysman . Évalué à 4.
C'est le concept même des outils GNU !
[^] # Re: Pas compris
Posté par steph1978 . Évalué à 3.
Faut utiliser l'option
--one-line
(-l
) pour ne pas avoir la conversion inverse.J'avoue que j'aurai choisi un comportement où il faut explicitement demander la conversion inverse.
[^] # Système métrique…
Posté par Arthur Accroc . Évalué à 8.
En effet, mais ça peut être pratique :
Si tu veux faire la conversion plus tard avec une calculatrice, ce sera plus facile et plus exact de diviser par 3,6.
Le problème, c’est qu’il faut manifestement connaître les noms anglo-saxons des unités plutôt que leurs noms standard dans les normes internationales utilisées dans les pays civilisés :
Oui, km/h pour lui, c’est kg × m / h. Hallucinant, non ?
Pourtant, km marche :
dm aussi :
Cela dit, si le principe du système métrique avait été appliqué aux heures, on n’aurait pas à faire de conversion de km/h en m/s, juste à déplacer la virgule : 1 kilomètre par décijour (2,4 h), c’est la même chose que 10 mètres par millijour (1 min 26,4 s) ou 0,1 mètre par centième de millijour (0,864 s) ou encore O,1 kilomètre par centijour (14 min 24 s, presqu’1/4 h, la division qui serait la plus pratique pour les rendez-vous et les horaires de cours).
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Re: Système métrique…
Posté par MCMic (site web personnel) . Évalué à 3.
Oui quand on met juste deux unités la sortie est tout à fait adaptée, ça donne le taux de conversion dans les deux sens.
Mais quand on met un calcul ou une valeur, ça devient très flou…
Là franchement je sèche, la division est un taux de conversion entre quoi et quoi?
[^] # Re: Système métrique…
Posté par chimrod (site web personnel) . Évalué à 2.
Pour ma rapport je le lis comme un rapport de grandeur entre ce que l'on veut et ce que l'on a. Par exemple on peut écrire :
Ce que je lis comme You have 2 * what you want, ou You want 0.5 * what you have. Si l'on ne donne pas de valeur à l'unité, celle-ci vaut par défaut
1
[^] # Re: Système métrique…
Posté par Benoît Sibaud (site web personnel) . Évalué à 5.
[^] # Re: Système métrique…
Posté par anaseto . Évalué à 2.
Je pense que c'est parce que «h» c'est pour «hecto» aussi, donc pour les heures c'est «hr» ou «hour». Par exemple
units km/hr m/s
marche correctement chez moi (avec le units d'OpenBSD, mais j'imagine que ça doit être pareil).[^] # Re: Système métrique…
Posté par anaseto . Évalué à 2.
Par contre, sous OpenBSD,
km/h
c'est10 m
, pas le truc fantaisiste que t'obtiens. Et le calcul est simple :km/h == 1000 * m / 100
:)[^] # Re: Pas compris
Posté par Benoît Sibaud (site web personnel) . Évalué à 3.
Avec le --verbose
# Merci de la découverte
Posté par chimrod (site web personnel) . Évalué à 8.
Je vais tester pour remplacer l'habituel
bc -l
que j'utilisais jusqu'alors.En plus, le fichier de données est bien documenté, ce qui ne gâche rien !
# Pratique!
Posté par patate . Évalué à 9.
Outil très intéressant, je ne connaissais pas! Ça va me faciliter la vie pour calculer l'heure de mes rendez-vous en kiloélectron-volts par Mégawatt.
You have: hours
You want: keV/MW
* 2.2469433e+25
/ 4.4504906e-26
# Un truc similaire pour le python.
Posté par Albert_ . Évalué à 5.
http://docs.astropy.org/en/stable/units/
Je ne comprend pas pourquoi ce n'est pas dans scipy mais bon c'est plutot sympa comme module.
[^] # Re: Un truc similaire pour le python.
Posté par bayo . Évalué à 1. Dernière modification le 27 mars 2017 à 13:18.
Je connaissais pint du coup j'ai un peu essayé, et ca semble ne pas bien fonctionner pour tout.
Je n'ai pas trouvé de comparatifs. Mais du coup astropy est peut-être plus spécifique à l'astronomie.
[^] # Re: Un truc similaire pour le python.
Posté par Albert_ . Évalué à 2. Dernière modification le 27 mars 2017 à 13:17.
Je ne suis pas alles dans le code donc je ne suis pas sur du pourquoi mais la facon de faire pour les temperatures:
mais je ne connaissais pas pint merci.
# Qalculate!
Posté par dzamlo . Évalué à 5.
J'utilise depuis peu Qalculate! et je trouve ça vraiment bien. C'est également une calculatrice qui gère les unités. Il y une interface graphique et un version en ligne de commande.
# Petite précision
Posté par ttyb0 . Évalué à 1.
Sympa, typiquement le genre de logiciel qu'on aurait aimé connaître plus tôt.
Pour certains calculs il faudra peut être penser à revoir la précision :
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.