INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Problem mit Variablen & Ergebnis
26.11.2020, 13:10
Beitrag #1
Problem mit Variablen & Ergebnis
Grüß Euch!

Ich bin einfach zu doof den Fehler zu finden warum ich nur 2 Nachkommastellen im Ergebnis erhalte. Hab schon alles was mein Wissen und Google hergibt angewendet, aber es will einfach nicht.

Der Wert Ausleuchtung bleibt einfach nur bei 2 Nachkommastellen Sad

Code:
void phasenberechnung()
{
  float mosyn = 29.530575; //29.550347;
  float wanz, jetzt, lvm, modiff, ausleuchtung = 1;
  //jetzt = time(&now);
  jetzt = 1606387020000.000000;

  lvm = 1604155793000.000000 / 86400000.000000;
  jetzt = jetzt / 86400000.000000;
  modiff = jetzt - lvm;
  wanz = modiff / mosyn;
  ausleuchtung = (wanz * 100.000000) / 100.000000;
  Serial.print("ausleuchtung : "); Serial.println(ausleuchtung);
}

Gruß aus Wiener Neustadt
Toni

=================================================================
Seit die Mathematiker über die Relativitätstheorie hergefallen sind, verstehe ich sie selbst nicht mehr.

Wer Rechtschreibfehler findet darf sie behalten Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.11.2020, 13:14
Beitrag #2
RE: Problem mit Variablen & Ergebnis
Weil der Default bei Float-print 2 Nachkommastellen ist.
Code:
Serial.println(ausleuchtung,4);
liefert Dir 4 Nachkommastellen.

Jetzt als float ist Unsinn, nimm unsigned long.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.11.2020, 13:32
Beitrag #3
RE: Problem mit Variablen & Ergebnis
Danke für deine rasche Antwort. So geändert

Code:
void phasenberechnung()
{
  float mosyn = 29.530575; //29.550347;
  float wanz, jahr, lvm, modiff, ausleuchtung = 1;
  unsigned long jetzt = 1606387020000;
  //jetzt = time(&now);
  
  lvm = 1604155793000 / 86400000;
  jetzt = jetzt / 86400000;
  modiff = jetzt - lvm;
  wanz = modiff / mosyn;
  ausleuchtung = (wanz * 100) / 100;
  Serial.print("ausleuchtung : "); Serial.println(ausleuchtung,4);
}

Aber nun dürft es da ein anderes Problem geben denn

13:29:56.113 -> ausleuchtung : -628.7043

Überlauf?

Gruß aus Wiener Neustadt
Toni

=================================================================
Seit die Mathematiker über die Relativitätstheorie hergefallen sind, verstehe ich sie selbst nicht mehr.

Wer Rechtschreibfehler findet darf sie behalten Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.11.2020, 13:45
Beitrag #4
RE: Problem mit Variablen & Ergebnis
(26.11.2020 13:32)rev.antun schrieb:  
Code:
unsigned long jetzt = 1606387020000;

Aber nun dürft es da ein anderes Problem geben denn

13:29:56.113 -> ausleuchtung : -628.7043

Überlauf?
Der Wert 1606387020000 ist auch für unsigend long zu groß

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.11.2020, 13:56
Beitrag #5
RE: Problem mit Variablen & Ergebnis
Na total arg ...

Code:
void phasenberechnung()
{
  double mosyn = 29.530575; //29.550347;
  double wanz, jahr, lvm, modiff, ausleuchtung = 1;
  double jetzt = 1606387020000;
  //jetzt = time(&now);
  
  lvm = 1604155793000 / 86400000;
  jetzt = jetzt / 86400000;
  modiff = jetzt - lvm;
  wanz = modiff / mosyn;
  ausleuchtung = (wanz * 100) / 100;
  Serial.print("ausleuchtung : "); Serial.println(ausleuchtung,4);
}

13:56:27.213 -> ausleuchtung : 0.8954

Ich glaub ich muss noch viel lernen Sad

Gruß aus Wiener Neustadt
Toni

=================================================================
Seit die Mathematiker über die Relativitätstheorie hergefallen sind, verstehe ich sie selbst nicht mehr.

Wer Rechtschreibfehler findet darf sie behalten Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.11.2020, 14:46
Beitrag #6
RE: Problem mit Variablen & Ergebnis
Welchen Sinn soll es haben, mit tausendstel Sekunden zu rechnen, wenn bei Deiner Zeitbasis nicht mal die Sekunde genau ist?
time liefert ganze Sekunden und wenn time nicht aus einer externen genauen Uhr gespeist wird, läuft das am Tag um einige Sekunden weg.

Irgendwelche Nachkommastellen erzeugen keine Genauigkeit, sie täuschen diese nur vor und verschlechtern die Ergebnisse. Float (und double) haben auf den AVR 5 bis 6 signifikante Stellen, alles andere ist (Selbst-)Betrug.

Zur Not könntest Du mit unsigned long long (uint64_t) arbeiten. Die kann aber print nicht ausgeben. Da müsstest Du meine erweiterten Printroutinen benutzen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.11.2020, 14:51
Beitrag #7
RE: Problem mit Variablen & Ergebnis
Aber jetzt passt der Timestamp nimmer HuhHuhHuh

double jetzt = 1606387020000;
Serial.println(time(&now)); => 1606396724

Gruß aus Wiener Neustadt
Toni

=================================================================
Seit die Mathematiker über die Relativitätstheorie hergefallen sind, verstehe ich sie selbst nicht mehr.

Wer Rechtschreibfehler findet darf sie behalten Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.11.2020, 14:57
Beitrag #8
RE: Problem mit Variablen & Ergebnis
(26.11.2020 14:46)Tommy56 schrieb:  Welchen Sinn soll es haben, mit tausendstel Sekunden zu rechnen, wenn bei Deiner Zeitbasis nicht mal die Sekunde genau ist?
time liefert ganze Sekunden und wenn time nicht aus einer externen genauen Uhr gespeist wird, läuft das am Tag um einige Sekunden weg.

Irgendwelche Nachkommastellen erzeugen keine Genauigkeit, sie täuschen diese nur vor und verschlechtern die Ergebnisse. Float (und double) haben auf den AVR 5 bis 6 signifikante Stellen, alles andere ist (Selbst-)Betrug.

Zur Not könntest Du mit unsigned long long (uint64_t) arbeiten. Die kann aber print nicht ausgeben. Da müsstest Du meine erweiterten Printroutinen benutzen.

Gruß Tommy

Eigentlich steckt da der Unix-Timestamp (NTP) dahinter, und ich berechne die Mondphasen. Und die umgesetzte Formel war der (scheinbar) der einfachste Weg, auf die scheibare extrene Genauigkeit leg ich in dem Fall keinen Wert.

Leider hab ich es nicht geschafft die Berechnung so zu ändern das ich mit geringerer Genauigkeit rechne - siehst eh jetzt bekomm ich ja den Timestamp eh wie es schöner wär, aber das macht mich fertig ....

Das Ergebnis würde jetzt passen, aber Sad

Hab jetzt total den Faden verloren.

Gruß aus Wiener Neustadt
Toni

=================================================================
Seit die Mathematiker über die Relativitätstheorie hergefallen sind, verstehe ich sie selbst nicht mehr.

Wer Rechtschreibfehler findet darf sie behalten Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Problem mit Neuem Bootlader installieren Warmbronner 10 536 27.06.2021 16:19
Letzter Beitrag: Bitklopfer
  Unterroutine-Aufruf mit Variablen mega-hz 26 1.401 17.06.2021 16:02
Letzter Beitrag: Tommy56
  Problem bei Multitasking und millis() Maxcruiser 41 2.157 01.06.2021 22:22
Letzter Beitrag: Maxcruiser
  Problem Relaisplatine Maui 14 1.467 23.03.2021 15:20
Letzter Beitrag: hotsystems
  Problem mit "pow" awillib 9 1.167 27.02.2021 19:22
Letzter Beitrag: Tommy56
  Pwm Problem safitom 4 684 20.02.2021 12:14
Letzter Beitrag: safitom
  Befehl für Variablen-Ausdruck Heiner 9 1.305 09.02.2021 11:31
Letzter Beitrag: Heiner
  Problem mit "Keyboard" und "Mouse" LK2567 4 759 03.02.2021 16:11
Letzter Beitrag: MicroBahner
  const char zu int Konvertierung Problem Lumplux 1 505 02.02.2021 10:26
Letzter Beitrag: Lumplux
  Arduino Uno+ Ethernetshield W5100 Website Problem Justus S. 9 1.057 31.01.2021 17:37
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste