AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

floats auf Null prüfen (C++)

Ein Thema von SnuffMaster23 · begonnen am 3. Apr 2008 · letzter Beitrag vom 5. Apr 2008
 
Benutzerbild von SnuffMaster23
SnuffMaster23

Registriert seit: 13. Feb 2006
Ort: Kempten
253 Beiträge
 
#12

Re: floats auf Null prüfen (C++)

  Alt 4. Apr 2008, 20:23
@DMW: Hm, das geht tatsächlich nicht so. Das war nur schnell in der Vorlesung hingeschrieben, ich hab irgendwie gedacht ein double wäre 32 Bits lang und der Compiler wirds schon machen^^
Das mit den ints is mir klar, ich kenn das Zweierkomplement (und die float-Normen, drum wollt ich das vorderste Bit wegmachen).

Soa, ich habs grad mal schnell ausprobiert, es macht keinen Unterschied^^
Code:
#include <iostream>
#include <conio.h>
#include <windows.h>

using namespace std;

#define e 0.00001
#define NUM 999999999

inline bool isNull (double val, double ep = 0.000000001)
{
    *reinterpret_cast <long long*> (&val) &= 0x7FFFFFFFFFFFFFFFull;
    return (val < ep);
}

int main()
{
  LARGE_INTEGER Freq,
                Start,
                End;
  int i;
  double Zero = 0.0;

  QueryPerformanceFrequency(&Freq);
  cout << "Plx auf Echtzeit schalten und Taster drücken...";
  getch();
  cout << endl;

  QueryPerformanceCounter(&Start);
  for (i=0; i<NUM; i++)
    (Zero<e || Zero>-e);
  QueryPerformanceCounter(&End);
  cout << "(x<e || x>-e): " << (Start.QuadPart / (double)End.QuadPart) << " Sek." << endl;

  QueryPerformanceCounter(&Start);
  for (i=0; i<NUM; i++)
    isNull(Zero, e);
  QueryPerformanceCounter(&End);
  cout << "isNull: " << (Start.QuadPart / (double)End.QuadPart) << " Sek." << endl;

  return 0;
}
Die Priorität des Prozesses hab ich auf Echtzeit geschaltet um Einflüsse vom Multitasking weitestgehend auszuschließen und es kommt immer bei beiden das gleiche raus.
Code:
Plx auf Echtzeit schalten und Taster dr³cken...
(x<e || x>-e): 0.999548 Sek.
isNull: 0.999548 Sek.
@Chemiker: Wo ist IsZero drin? Die hab ich nicht gefunden, auch nicht beim fix googeln.

Aber ich denk ich pack einfach die zwei Vergleiche in ne inline Funktion, die versteh ich später gleich wieder^^. Es macht ja eh keinen Unterschied.

MfG,
SnuffMaster23
"Conspiracy is the poor man's mapping of the world" - Fredric Jameson
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz