double in unsigned long umwandeln

Gast #1956732
Lesenswert?

Hallo,

ich möchte einen double Wert in einen unsigned long Wert umwandeln.
Folgendes geht doch nicht!?
//
ulong    Longvar;
double   Doublvar= 1000.1;
Longvar= Doublvar;
// !!

Dazu müsste es doch eine Bibliotheksfunktion geben (dtolong etc.)??
auch trunc() und round() gibt's nicht mit Integer- / Long-Ergebnis...
Ich finde dazu nix passendes.

Wie macht ihr das?

PS: zur Not täte es auch float zu uint(16)...
Gast #1956791
Lesenswert?

@ kbuchegg:
Setzt der Compiler wirklich eine Umwandlungsfunktion bei der Zuweisung 
"Longvar= Doublvar";
ein??

@ klugscheisser:
Die Frage ist, was wirklich beim Casten passiert.
wenn nur die 64-Bit double-Variable als 64-Bit Long uminterpretiert 
wird, kommt Müll raus.

Letztendlich bleibt die Frage, ob der Compiler das richtige macht.
#1956795
Lesenswert?

Alexxx schrieb:
> @ kbuchegg:
> Setzt der Compiler wirklich eine Umwandlungsfunktion bei der Zuweisung
> "Longvar= Doublvar";
> ein??

Natürlich.
Warum denn nicht?
Alle Kommastellen werden abgeschnitten und was zahlenmässig übrig bleibt 
wird an den long zugewiesen. Was soll auch sonst passieren, was auch nur 
einigermassen sinnvoll wäre.

> @ klugscheisser:
> Die Frage ist, was wirklich beim Casten passiert.

Die eigentliche Frage ist, warum du nicht ein C-Buch liest

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren