IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Comment arrondir un résultat à un certain nombre de chiffres significatifs


Sujet :

MATLAB

  1. #1
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Points : 43
    Points
    43
    Par défaut Comment arrondir un résultat à un certain nombre de chiffres significatifs
    Bonsoir;
    Mes opérations me donne des valeurs avec 4 chiffres après la virgule. Je ne veux garder que tris. Comment faire?
    Merci d'avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 304
    Points : 52 882
    Points
    52 882
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    a=12.5453
    a=round(1000*a)/1000
    et plus généralement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    n=3;
    a=round(10^n*a)/10^n

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 25
    Points : 39
    Points
    39
    Par défaut
    Utilisation de la fonction roundn:

    1. a=12.5453
    2. a=roundn(a,-3)

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Ingénierie en automatisation et systèmes intelligents
    Inscrit en
    Septembre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénierie en automatisation et systèmes intelligents
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 40
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par Dut Voir le message
    et plus généralement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    n=3;
    a=round(10^n*a)/10^n
    Il est d'ailleurs possible de généraliser encore plus cette formule pour ceux qui cherchent à arrondir à des fractions précises.

    Disons que tu veuilles arrondir au 1/4 près (0.25), alors :

    a=round(4*a)/4

    Disons que tu veuilles arrondir au 1/200 près (0.005), alors :

    a=round(200*a)/200

    Disons que tu veuilles arrondur au 1/1000 près (0.001), alors :

    a=round(1000*a)/1000

    D'où la formule citée.

    Bref, lorsqu'on veut uniquement arrondir à un certain nombre de chiffres après la virgule, alors la formule est celle citée.

    Tandis que la formule d'arrondissement aux fractions est tout simplement :

    Très utile
    Où f est le dénominateur de la fraction (pour arrondir à 3 chiffres après la virgule, alors f=1000 puisqu'on arrondit à 1/1000 = 0.001 [1/0.001 = 1000], pour arrondir à 0.025 près, alors f=40 puisqu'on arrondit à 1/40 = 0.025 [1/0.025 = 40]).

    Si c'est mélangeant de mettre le dénominateur comme f, alors :

    Très utile - Option 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    f=0.25;
    a=round(a/f)*f
    Mais f doit être une fraction unitaire, autrement dit 1/f donne un entier.

    --------------------------------------------------------------------------

    Et si je m'emballe, je peux même continuer en disant que si on veut un nombre arrondi au dividende le plus proche, alors :

    Utile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    d=0.123;
    a=round(a/d)*d
    Et le nombre obtenu sera divisible par d. J'ai mis une fraction, mais si on met d=4 et a=121, alors on obtiendra le nouveau a=120, qui est le dividende de 4 le plus proche. C'est la même formule que la précédente, mais je tenais à nuancer qu'ici la valeur d peut être quelconque et on obtiendra alors une valeur divisible par d et pas nécessairement un arrondissement fractionnaire.

    Si on veut juste arrondir la partie fractionnaire à une partie fractionnaire quelconque, alors :

    Moins utile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    q=0.15;
    a=round((a-fix(a))/q)*q+fix(a)
    Et donc, par exemple, avec q=0.15 et a=7.1, on obtiendra le nouveau a=7.15, pour a=7.95 ce serait 7.9 et pour a=7.999, ce serait aussi 7.9, car on n'obtiendra jamais d'arrondissement à 8 puisque 6*0.15 = 0.9 tandis que 7*0.15 = 1.05 > 1, l'arrondissement à 8 se fait donc de 8 à 8.074999.

    Trève de plaisanterie, bonne journée,

    Éric

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Nombres de nombres premiers avec un certain nombre de chiffres
    Par piotrr dans le forum Mathématiques
    Réponses: 3
    Dernier message: 25/02/2008, 18h03
  2. nombre de chiffres significatifs
    Par mitmit dans le forum SAS Base
    Réponses: 4
    Dernier message: 25/01/2008, 10h29
  3. Réponses: 3
    Dernier message: 12/04/2007, 11h32
  4. nombre de chiffres significatifs variable
    Par kamouminator dans le forum C
    Réponses: 4
    Dernier message: 07/11/2006, 14h14
  5. nombre de chiffres significatifs
    Par pianpif dans le forum Langage
    Réponses: 4
    Dernier message: 06/07/2006, 08h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo