[Squeak-fr] difficulte avec test d'egalite

stéphane ducasse ducasse at iam.unibe.ch
Ven 27 Mai 19:32:02 CEST 2005


> L'utilisation de l'epsilon permet de passer le test mais....  
> Lorsque je
> deboggue la méthode et que j'inspecte tour à tour "image x" et "-2.0"
> dans les deux cas l'inspecteur me retourne que les deux objets sont de
> type float et de valeur -2.0. J'attendrais que l'inspecteur me dise  
> que
> par exemple "image x" vaut 1.99999.
> Il semble donc que Squeak se permet quelques libertés d'affichage en
> arrondissant d'autorité. Depuis un outil de débogguage c'est  
> moyennement
> appréciable

Je pense que c'est une chose generale avec les float, il ne faut pas  
comparer leur representation graphique avec l'objet. Je ne crois pas  
que cela soit specifique a Squeak. Qd tu es dans le debuggeur tu vois  
une **representation*8 des objets ce qui est normal. et pour les  
floats on est au bord de la metaphore text/objet qui marche tres bien  
avec les int, bool, string.

par exemple tu pourrais faire image x printString pour comparer la  
representation textuelle
du float avec tous les risques que cela contient

> Je me contenterai donc d'un:
>
> self assert: ((image x closeTo: -2.0) and: [image y closeTo: 7.0])
>
>
> stéphane ducasse a écrit :
>
>> mais je pense que tu as raison les floats sont "dangereux"
>>
>>
>>>> La méthode suivante à un comportement bizarre:
>>>>
>>>>
>>>> testReflexion
>>>>     |image|
>>>>     image := b reflectWith: u at: a.
>>>>     self assert: (image x = -2.0 and: [image y = 7.0])
>>>>
>>>>
>>>> Les tests d'égalité sont false alors que :
>>>>
>>>> "image x" s'évalue à -2.0 (instance de Float)
>>>>
>>>>
>>>>
>>>
>>> Je ne connais pas la cause de ton probleme, mais dans la plupart des
>>> langages un test d'egalite de float et different d'un test d'égalite
>>> d'entiers. En effet, tous les calculs sur les flottants se font   
>>> avec une
>>> certaine precision.
>>>
>>> Pour verifier si le probleme vient de la, change ton test en :
>>>
>>> (image x - -2.0) abs < 0.001
>>>
>>> (verifie la syntaxe)
>>>
>>> En fait, le test revient a verifier si les deux nombres sont assez
>>> proches pour considerer qu'ils sont egaux. Cette reponse est  
>>> juste une
>>> indiquation et je peux me tromper completement ; je ne connais  
>>> pas  assez
>>> Squeak pour etre plus precis.
>>>
>>> -- 
>>> Damien
>>> _______________________________________________
>>> Squeak-fr mailing list
>>> Squeak-fr at lists.squeakfoundation.org
>>> http://lists.squeakfoundation.org/listinfo/squeak-fr
>>>
>>>
>>
>> _______________________________________________
>> Squeak-fr mailing list
>> Squeak-fr at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/listinfo/squeak-fr
>>
>>
>
> -- 
> http://www.ofset.org/petition
> Pétition de soutien au developpement
> de logiciels libres pour l'éducation.
>
> _______________________________________________
> Squeak-fr mailing list
> Squeak-fr at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/listinfo/squeak-fr
>



Plus d'informations sur la liste de diffusion Squeak-fr