accès aux groupes de discussion, consultation et publication d'articles, recherche de "newsgroups"...
membres, identifiez-vous
é-mail Mot de passe
nouveau ? mot de passe oublié ?
Chargement... Chargement en cours...

Groupes français belges canadiens suisses internationaux Nétiquette
Échangez opinions et commentaires dans les forums de discussion.

Re: round avec une certaine precision ?

 [  Nouvelle Discussion Nouvelle discussion  |  Répondre au groupe Répondre au groupe  |  fr.comp.lang.ruby ] 

Retour : Accueil du site fr comp lang ruby  


  Sujet:   Re: round avec une certaine precision ?  
 De: unbewusst.s...@weltanschauung.com.invalid (Une Bév ue)
 Groupes: fr.comp.lang.ruby
 Organisation: Service de news de lacave.net
 Date: 22. Nov 2007, 18:45:23
 References: 1 2 3
F. Senault <fred@lacave.net> wrote:

> >> 44.0 + (91.0 / 100.0) + 10.01 == 54.92
> => false

évidemment MAIS, quand on fait un arrondi, amha, il faut aller jusqu'au
bout, faire aussi une comparaison avec arrondi (eps) :

--- script --------------------------------------------------
#! /usr/bin/env ruby

class Float
  def ===( aFloat, eps = 1.0e-10)
    begin
      raise "Argument \"#{aFloat}\" must be a Float (being of class
#{aFloat.class})." if aFloat.class.to_s != "Float"
      ( self > aFloat - eps ) && ( self < aFloat + eps )
    rescue
      puts "An error occurred: #{$!}"
      nil
    end
  end
  
  def aprox( eps = 1.0e-10 )
    ( self / eps ).round * eps
  end
end

vref = 2.0
val = [ 2.00000000002, 2.0000000002, 2.000000002, 2.00000002]
val.each do | v |
  puts "#{v} -o-> #{v.aprox}"
  puts "( #{vref} ===? #{v} ) = #{( vref === v )}"
end
-------------------------------------------------------------


résultats :
2.00000000002 -o-> 2.0
( 2.0 ===? 2.00000000002 ) = true
2.0000000002 -o-> 2.0000000002
( 2.0 ===? 2.0000000002 ) = false
2.000000002 -o-> 2.000000002
( 2.0 ===? 2.000000002 ) = false
2.00000002 -o-> 2.00000002
( 2.0 ===? 2.00000002 ) = false

MAIS je ne parviens pas à changer la valeur de eps (par défaut à
1.0e-10) en faisant qqc comme :

machin = ( x ===(y, 1.0e-3) )

j'ai tjs une erreur du parser...
-- 
Une Bévue


DateSujet  Auteur
06.11.
* round avec une certa
LaP
06.11.
`* Re: round avec une certa
Eric Jacoboni
07.11.
 +- Re: round avec une certa
come
07.11.
 `* Re: round avec une certa
F. Senault
07.11.
  +* Re: round avec une certa
Eric Jacoboni
08.11.
  |+- Re: round avec une certa
LaP
08.11.
  |`- Re: round avec une certa
F. Senault
22.11.
  `-   Re: round avec une certa
Une Bév ue
Groups Explorer contact votre avis comment ça marche? rechercher un groupe suggérer un groupe abuse accueil du site   Imprimer cette page   Envoyer cette page à un(e) ami(e)