isNumeric in Phobos(D1&D2) seems bugged
badmadevil
badmadevil at gmail.com
Mon Feb 11 20:19:37 PST 2008
Sergey Gromov wrote:
> badmadevil <badmadevil at gmail.com> wrote:
>> ============================= isnum.d
>> import std.stdio ;
>> import std.string ;
>> void main(string[] args) {
>> for(int i = 1 ; i< args.length ; i++)
>> writefln("\"%s\" is%s a numeric.", args[i], isNumeric(args[i], true)? "": " not") ;
>> }
>> ============================= output
>>> isnum.exe 9.9e+99 99e+9.9 9.9e+9.9
>> "9.9e+99" is a numeric.
>> "99e+9.9" is a numeric.
>> "9.9e+9.9" is not a numeric.
>>
>> The last one should give affirmative.
>
> Yes, I think there is a bug, too. Though not where you're pointing it
> out. D doesn't support fractional exponents. This means that both
> "99e+9.9" and "9.9e+9.9" are not numbers.
>
ic, i check these strings with ruby eval() function
by if exception raise, and give last 2 non-numeric.
But, I also check if 9.9e99 (vs 9.9e+99)is numeric.
In ruby, it is numeric; in D isNumeric, it is not.
However, to!(real)("9.9e99") give 9.9e+99. ie. in D
> isnum2 9.9e99 99e9.9 9.9e9.9
"9.9e99" is not a numeric(9.9e+99).
"99e9.9" is not a numeric<conv error>.
"9.9e9.9" is not a numeric<conv error>.
More information about the Digitalmars-d-bugs
mailing list