[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