Test case: auto s = "0 "; auto f = parse!double(s); // std.conv.ConvError: no digits seen The problem is that when the string starts with '0', parse() skips that char to check if the next one is 'x' (to determine whether it's a hex number). When it is not a hex number, like in the example above, the zero is simply discarded.
http://www.dsource.org/projects/phobos/changeset/2074