Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/06/2022, à 10: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, à 10: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, à 10: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, à 11:22)

Hors ligne

#4 Le 25/06/2022, à 10: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, à 10:49)

Hors ligne

#5 Le 25/06/2022, à 12: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, à 12:29)

Hors ligne