Must be something wrong with the C run-time:
import std.c.math, std.stdio;
void main()
{
writefln( std.c.math.exp2f(0.0f) );
writefln( std.c.math.exp2(0.0) );
writefln( std.c.math.exp2l(0.0) );
}
These all print 0; when passing 0.00000000001 they'll correctly print 1.