PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Integer Wert umwandeln



sunshine-live
22-12-2004, 08:58
Hallo,

ich bekomme mit einer snmpget abfrage einen Integer Wert unter Unix
in kb ausgegeben.

Beispiel: 456356 als Integer

Ich möchte die Ausgabe in MB haben, daher teile ich durch 1048576.
Da Integer keine Nachkommastellen kennt bekomme ich nur eine gerundete Zahl ausgegeben.

Wer kennt eine Möglichkeit, die MB Angabe mit zwei Nachkommastellen ausgeben zu lassen?

Vielen Dank für eure Hilfe
sunshine-live

michael.sprick
22-12-2004, 10:20
mit welcher Sprache arbeitest Du denn überhaupt?

peschmae
22-12-2004, 11:51
So ziemlich alle Sprachen können irgendwie ein printf. z.B. in der bash:


peschmae@thinkpad:~$ printf "%.2f\n" 1241924.124124
1241924.12


MfG Peschmä

sunshine-live
22-12-2004, 14:04
schreibe das script in einer .sh

Joghurt
22-12-2004, 14:16
Teile nicht du 1048576, sondern durch 1048576.0, damit du eine Float-Zahl bekommst.

Meistens reicht es, die Zahl mit einem Punkt abzuschließen

sunshine-live
22-12-2004, 15:12
Funktioniert leider nicht;

hier mein code:

#get ram
ram=`snmpget -Oqv -v 2c -c public 175.41.66.66 SNMPv2-SMI::enterprises.9.3.6.6.0`

let ram1=$ram/1048576.0
echo Ram:
echo "===="
echo $ram1 MB

Joghurt
22-12-2004, 17:36
Die Shells können nur mit Integers rechnen.
Nutz den Umweg über perl oder bc.Für dc

ram1=$(echo 4k $ram 1048576 /p | dc)bc nutzt die Reverse Polish Notation, ist also stackbasiert.
4k Setzt die anzahl der Nachkommastellen auf 4, / dividiert die beiden vorherigen Zahlen voneinander, p gibt sie aus.
$(...) ist äquivalent zu `...`, nur besser lesbarer, IMHO

sunshine-live
04-01-2005, 11:03
danke funktioniert wunderbar