Pages : 1
#1 Le 25/06/2022, à 09:08
- loutch
m/s en km/h avec décimale
Bonjour
Voila je me suis fait un script pour changer les m/s en km/h et ça foire .
#!/bin/bash
num1=$(sed -n '1p' $HOME/.conky/Alfirk/vent)
num2=3.6
ans=$((num1 * num2))
echo $ans > $HOME/.conky/Alfirk/vent1
il fonctionne avec des chiffres ronds sans point ou virgule
num 1 = 2
num2 = 36 c'est okay
mais si
num1=1.6 ou chiffre rond
num2 = 3.6 nombre qu'il faut pour faire des km/h
ça fonctionne pas .
MERCI d'avance.
@+
Hors ligne
#2 Le 25/06/2022, à 09:25
- pingouinux
Re : m/s en km/h avec décimale
Bonjour,
Essaye :
ans=$(bc -l <<<"$num1*$num2")
Hors ligne
#3 Le 25/06/2022, à 09:45
- MicP
Re : m/s en km/h avec décimale
Bonjour
Pour les opérations arithmétiques, l'interpréteur de commandes bash
n'utilise que des entiers <=> pas de virgules et résultats arrondis.
=======
… changer les m/s en km/h …
Pour ce que tu veux faire,
il vaut mieux utiliser la commande bc (basic calculator)
#!/bin/bash
mParSec="1.6"
KmParHeure=$(bc <<< "scale=3; $mParSec * 3600 / 1000") # avec 3 décimales
echo "$KmParHeure"
=======
Voir :
man bc
Dernière modification par MicP (Le 25/06/2022, à 10:22)
Hors ligne
#4 Le 25/06/2022, à 09:46
- loutch
Re : m/s en km/h avec décimale
RE
@ pingouinux
T'es un chef , encore MERCI
@ MicP
MERCI @ toi aussi , encore appris un truc.
@+
Dernière modification par loutch (Le 25/06/2022, à 09:49)
Hors ligne
#5 Le 25/06/2022, à 11:04
- MicP
Re : m/s en km/h avec décimale
En français, le séparateur décimal est une virgule, alors si besoin,
tu pourras faire s'afficher le résultat en fonction de la valeur du séparateur décimal paramétré dans les variables locales de ton système
en remplaçant la ligne echo "$KmParHeure"
par :
env printf '%.3f\n' "$KmParHeure"
le .3 est là pour indiquer de n'afficher que 3 décimales.
=======
En utilisant une variable à laquelle on affecterait la valeur du nombre de décimales,
et en tenant compte des variables locales pour le séparateur décimal,
ça pourrait donner quelque chose comme ça :
#!/bin/bash
mParSec="1.6"
nbrDecimales=3
KmParHeure=$(bc <<< "scale=$nbrDecimales; $mParSec * 3600 / 1000") # avec 3 décimales
env printf "%."$nbrDecimales"f m/s <=> %."$nbrDecimales"f Km/h\n" "$mParSec" "$KmParHeure"
Ce qui donne :
1,600 m/s <=> 5,760 Km/h
Dernière modification par MicP (Le 25/06/2022, à 11:29)
Hors ligne