about float & double
Ali Çehreli
acehreli at yahoo.com
Tue Jan 18 15:00:02 PST 2011
spir wrote:
> Is there somewhere a (clear) doc about float/double internals?
A very good read is:
http://digitalmars.com/d/2.0/d-floating-point.html
> Some more particuliar questions:
>
> What is the internal bit layout? (mantissa, sign, exponent)
IEEE floating point format. This page has links to different
representations:
http://en.wikipedia.org/wiki/Ieee_floating_point
Specifically:
http://en.wikipedia.org/wiki/Single_precision_floating-point_format
http://en.wikipedia.org/wiki/Double_precision_floating-point_format
> What are the values used to represent thingies like NaNs, inf, error?
> (Or are there not represented as values?)
They are available on the documents above.
> How would you get a float's integral and fractional parts without
> performing arithmetic? (I think at bit ops, indeed)
Here is a function with endianness "issues" that I had used with
different types:
import std.stdio;
void display_bytes(T)(ref T variable)
{
const ubyte * begin = cast(ubyte*)&variable;
writefln("type : %s", T.stringof);
writefln("value : %s", variable);
writefln("address : %s", begin);
writef( "representation: ");
foreach (p; begin .. begin + T.sizeof) {
writef("%02x ", *p);
}
writeln();
writeln();
}
void main()
{
auto d_nan = double.nan;
auto d_inf = double.infinity;
display_bytes(d_nan);
display_bytes(d_inf);
}
Ali
More information about the Digitalmars-d-learn
mailing list