What am I doing wrong here - canFind with iota is not working

Baz via Digitalmars-d digitalmars-d at puremagic.com
Thu Feb 26 03:18:28 PST 2015


On Thursday, 26 February 2015 at 11:12:42 UTC, Kingsley wrote:
> On Thursday, 26 February 2015 at 11:04:58 UTC, Baz wrote:
>> On Thursday, 26 February 2015 at 10:55:43 UTC, Kingsley wrote:
>>> float oneDegree = (PI / 180.0);
>>> float first = -(oneDegree * 10.0);
>>> float second = (oneDegree * 10.0);
>>> float step = 0.000001;
>>> float[] r = iota(first,second,step).array;
>>>
>>> writeln(r);
>>>
>>> float item = 0.174531;
>>> writeln(r.canFind(item));
>>>
>>>
>>> // returns false for canFind - even though that float is in 
>>> the array ???
>>
>> also mark your float litteral with the f postfix. By default 
>> FP litterals are double...IIRC
>>
>> float oneDegree = (PI / 180.0f);
>> float first = -(oneDegree * 10.0f);
>> float second = (oneDegree * 10.0f);
>> float step = 0.000001f;
>> float[] r = iota(first,second,step).array;
>>
>> writeln(r);
>>
>> float item = 0.174531f;
>> writeln(r.canFind(item));
>
> Adding the f still produces a false result. Also I tried 
> changing all to double but still not working - I always get 
> false back. Interestingly if I harcode the output of the iota 
> into an array - then things start to work as I expect.

Sorry, in the past i've found that similar questions about FP can
be solved by following this way. There must be something that is
not 'float' in the processing...


More information about the Digitalmars-d mailing list