Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

06.05.2015, 10:47

SFML seltsame ausgabe von clock::getElapsedTime

Hi
Ich programmiere seit kurzem erst mit SFML.
ich habe das problem das ich getelapsedtime inem float speichere und den dann erstmal in die konsole ausgebe.
Einfach nur um ein wenig rumzuprobieren, aber ich bekomem folgende ausgabe:

Zitat

2e-006
Der code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <SFML/Graphics.hpp>

using namespace std;


int main()
{
    sf::Clock clock;
    float Time = clock.getElapsedTime().asSeconds();
    cout << Time << endl;
    return 0;
}


Würde außerdem gerne wissen obs nen unterschied gibt wenn ich sf::Time zum speichern oder ein float nutze.
mfg. eronor

Tobiking

1x Rätselkönig

  • Private Nachricht senden

2

06.05.2015, 12:01

Die Ausgabe ist vollkommen in Ordnung. Besonders kleine und große Zahlen werden bei der Ausgabe mit die Exponentialschreibweise abgekürzt. 2e-006 steht für 2 * 10^-6 was 0,000002 entspricht.

sf:time scheint die Zeit intern als 64-bit Integer zu speichern. Damit hat man im Vergleich zum Float erstmal keine Rundungsfehler. Die Frage ist auch, welchen Vorteil hast du davon float zu nutzen statt sf::Time?

3

06.05.2015, 12:30

hab keine vorteile hab nur bemerkt das beides geht daher wollt ich ja wissen was der unterschied ist ^^
danke, bin nicht gewohnt das zahlen abgekürzt werden is mir zum ersten mal passiert.

4

06.05.2015, 13:59

sf::Time ist "besser", weil du, wie erwähnt, keine Rundungsfehler hast, klar, aber viel wichtiger: Die Umrechnungen sind relativ sicher!
Gemäß des DAU-Prinzips und da man selbst auch dieser "User", gerade eben im Hobbybereich, ist, sollte ein gewisser Wert auf Verständlichkeit gelegt werden.
Wenn du da zigtausend Umformungen hartcoden musst ist das mMn nicht so knorke.

MfG
Check

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

5

07.05.2015, 05:19

Was erwartest du wenn du den Timer startest und in der nächsten Zeile abfragst wieviel Zeit vergangen ist? Der Wert muss verdammt klein sein, ein Wunder, dass überhaupt ein Wert über 0 herauskommt.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

6

07.05.2015, 09:04

[...] ein Wunder, dass überhaupt ein Wert über 0 herauskommt.
Er arbeitet bestimmt im Debug-Modus. ;)

Aber wie bereits beschrieben wurde, solltest du so lange wie möglich mit sf::Time arbeiten. An manchen stellen wirst du wohl deine Werte mit der Sekundenzahl multiplizieren müssen, bis dahin solltest du aber mit sf::Time arbeiten.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Werbeanzeige