Comparing double and float values
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Thu May 12 09:58:26 PDT 2011
On 5/12/11 11:21 AM, Abid H. Mujtaba wrote:
> Section 5.5 Overloading on page 142 it defines the following example
> of a "find" function which searches for slices within slices:
>
> T1[] find( T1, T2 )( T1[] longer, T2[] shorter )
> if( is( typeof( longer[ 0 .. 1 ] == shorter ) : bool ) )
> {
> while ( longer.length>= shorter.length ) {
> if ( longer[0 .. shorter.length] == shorter ) break ;
> }
>
> return longer ;
> }
>
> On page 143 it defines the following unittest :
>
> unittest {
>
> double[] d1 = [ 6.0, 1.5, 2.4, 3 ] ;
> float[] d2 = [ 1.5, 2.4 ] ;
>
> assert( find(d1,d2) == d1[1 .. $] ;
> }
>
> It is the assert() that fails since the comparison longer[0 ..
> shorter.length] == shorter fails because the comparison between the
> double and float values fails due to bit precision and
> representation issues.
I see. Thanks! I updated the errata with credit:
http://erdani.com/tdpl/errata
Andrei
More information about the Digitalmars-d
mailing list