realbasic-nug.fr
[Top] [All Lists]

Arrondis variables

To: REALbasic NUG French <realbasic-nug dot fr at lists dot realsoftware dot com>
Subject: Arrondis variables
From: frael <frael at marine-label dot com>
Date: Tue, 18 Sep 2007 23:03:51 +0200
Delivered-to: listarchive at realsoftware dot com
Delivered-to: realbasic-nug dot fr at lists dot realsoftware dot com

Hello
Voila 2 méthodes pour arrondir un nombre à 2 décimales, ci-dessous wdou2 et wdou3

  dim wdou1, wdou2, wdou3, wdou20, wdou30 As Double
  dim wst As String

  wdou1 = 45.73 * 0.5


  wdou2 = Round(wdou1 * 100)
  wdou2 = wdou2 / 100

  wst = Format(wdou1, "-0.00")
  wdou3 =CDbl(wst)

  wdou20 = wdou2 * 10000
  wdou30 = wdou3 * 10000

•  point d'arrêt: on voit que

wdou1  = 22,8649999999999984
wdou2  = 22,870000000000001
wst = 22,86
wdou3  = 22,8599999999999994

La bonne réponse est 22,87 (22,865 avec 3 décimales)

multiplié par 10000 l'erreur est plus flagrante :
wdou20 = 228700,
wdou30 = 228600,

--> pourquoi le Format rend un truc faux ?
--> et surtout, comment être sûr que le Round rend toujours un truc juste ?
--> ou alors, quelle méthode fiable d'arrondi utiliser ?

Tests faits en 2007R4, avec les memes resultats sur macs PPC et Intel, en X.10

Marc

<Prev in Thread] Current Thread [Next in Thread>