Kehrwert bilden?

OP #450325
Lesenswert?
• ▲
▼
Hallo,

Wenn ich beim AVR bisher Zahlen mit Kommastellen die relevant waren 
hatte, habe ich die Zahl mit 10^x Multipliziert und dann bei der AUsgabe 
das Komma richtig gesetzt.

Nun muss ich bei einer Berechnung einen Kehrwert einer Zahl > 1 bilden. 
Da kommt dann ja Zwangslaeufig was < 1 mit Komma raus. Wie kann ich das 
im AVR Speichern?

Wuerde sowas gehen?
x=879;
y = (1/x)*1000;

Ich denke da wuerde 0 rauskommen da der erste Teil der Multi 0 ist, 
richtig?


Gruss


H:V
#450338
Lesenswert?
• ▲
▼
Einfach umformen in y = (10^e / x);

in deinem Beispiel:

x = 879;
y = 1000/879;

dann ist y = 1; dargestellt mit deinem um 1000 verschobenen 
dezimalpunkt:
0.001;

Für mehr genauigkeit:
y = 1000000 / 879; // Achtung, 32bit int nötig!
y == 1137; // entspricht 0.001137

/Ernst
Moderator Persönliche Seite #450408
Lesenswert?
• ▲
▼
Karl heinz Buchegger wrote:

> Wenn es aber nicht unbedingt sein muss, verwende es
> nicht.

Kann man so allgemein auch nicht sagen.  Hängt einfach von der Aufgabe
und den verfügbaren Ressourcen ab.  Wenn die Plattform ohnehin ein nur
zu 20 % ausgelasteter ATmega128x ist und der Rechenzeitbedarf keine
Rolle spielt, warum nicht?  Es macht ja zumindest Dinge einfacher und
übersichtlicher, ergo vermeidet es Bugs.  Für den ungenutzten ROM
bekommst du von Atmel auch kein Geld zurück. ;-)

Eine andere Epsiode, wo floats besser als scaled integers funktionieren,
hat Luke Morrison hier aufgeschrieben:

http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=43970#271216

Klar, es hätte nicht unbedingt sein müssen, war aber letztlich die
bessere Lösung.
#450681
Lesenswert?
• ▲
▼
> Kann man so allgemein auch nicht sagen.

Agreed :-)
(Um auch mal etwas internat. Flair in das Forum zu bringen)

> Hängt einfach von der Aufgabe und den verfügbaren Ressourcen ab

Klar.
Hängt aber auch davon ab, ob der Programmierer weiss, welchen
Sack von möglichen Problemen er mit float aufmacht. Speziell
mit float, double ginge ja noch. Ich hab schon so manche
Stunde über double Berechnungen gebrütet und Formeln
wie wild umgestellt, Verfahren gewechselt, um Rechenungenaugkeiten
in den Griff zu kriegen. (Ich komme aus der CAD Ecke. Ein
schleifender Schnitt 2-er Geraden ist so ziemlich das
Heimtückischte und Eckelhafteste was man sich vorstellen kann).

Man sollte besser sagen: float bzw. double ist auch kein
Allheilmittel. Und da rede ich noch nicht mal von der
auf AVR verringerten Rechengeschwindigkeiten. Mit 5, 6, 7
Stellen Genauigkeit ist halt schnell Schluss mit lustig.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.