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 :

problème avec round


Sujet :

MATLAB

  1. #1
    Membre du Club Avatar de NELLLY
    Inscrit en
    Mars 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 94
    Points : 50
    Points
    50
    Par défaut problème avec round
    Bonjour
    je veux arrondir les valeurs de la matrice som10 en deux chiffres après le virgule. J'ai le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    %%%%som10%%%
    for i=1:length(n)
        for j=1:length(p)
            som10(j,i)=sum(m0{1,i,j}.*ft10{1,i,j});
        end
    end
    whos som10
    pause
    %som10
    %pause
    round(som10*100)/100
    pause
    Le problème c'est qu'il m'affiche 5 chiffres après la virgule ce qui est bizarre. Je ne sais pas pourquoi?

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    les 3 derniers chiffres sont des 0, non?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Membre du Club Avatar de NELLLY
    Inscrit en
    Mars 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 94
    Points : 50
    Points
    50
    Par défaut
    Effectivement ce ne sont pas des zéros et c'est ça le problème.

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bizarre...
    Que renvoie le "whos som10" que tu as mis dans ton code?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  5. #5
    Membre du Club Avatar de NELLLY
    Inscrit en
    Mars 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 94
    Points : 50
    Points
    50
    Par défaut
    C'est une matrice 1001*2

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Peux-tu copier le message renvoyé par matlab lorsque tu fais "whos som10"? (en faisant un copier/coller de tout ce qui s'affiche)

    Si tu exécutes ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    val = [3.53687 8.34345;444.324 23.2;432.98 133.24859];
    round(val*100)/100
    Est-ce que tu obtiens ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    val =
     
        3.5369    8.3435
      444.3240   23.2000
      432.9800  133.2486
     
     
    ans =
     
        3.5400    8.3400
      444.3200   23.2000
      432.9800  133.2500
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  7. #7
    Membre du Club Avatar de NELLLY
    Inscrit en
    Mars 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 94
    Points : 50
    Points
    50
    Par défaut
    pour ces lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
    %%%%som10%%%
    for i=1:length(n)
        for j=1:length(p)
            som10(j,i)=sum(m0{1,i,j}.*ft10{1,i,j});
        end
    end
    whos som10
    pause
    som10
    pause
    ROUNDSOM10=round(som10*100)/100;
    ROUNDSOM10(1:100,:)
    pause
    j'obtiens comme résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    Name        Size                   Bytes  Class
     
      som10    1001x2                    16016  double array
     
    Grand total is 2002 elements using 16016 bytes
     
    ans =
      75.87478475807974  75.95374856452558
      76.47011328864528  76.57202081740404
      77.07931229445717  77.05875763740325
      77.93273663989777  77.69440100800907
      78.56630565577710  78.54904963134906
      79.21747269883213  79.17991273108005
      79.81652238742329  79.82070080244377
      80.52184708527803  80.43946860315828
      81.40196334777086  81.02546977267213
      82.36732297039872  81.68073927976744
      82.95634602105343  82.94672018043750
      83.48047847204269  83.52767752555302
      84.00855174214118  84.13562319801120
      84.80237518326156  84.65528817667509
      85.30778103988891  85.18758843109022
      85.82506127726560  85.99392423502665
      86.32652109908186  86.42646484016761
      86.86063489512318  86.94634253978870
      87.63049072028390  87.46695899011419
      88.13393953225717  87.98425630696370
    ans =
      75.87000000000001  75.95000000000000
      76.47000000000000  76.56999999999999
      77.08000000000000  77.06000000000000
      77.93000000000001  77.69000000000000
      78.56999999999999  78.55000000000000
      79.22000000000000  79.18000000000001
      79.81999999999999  79.81999999999999
      80.52000000000000  80.44000000000000
      81.40000000000001  81.03000000000000
      82.37000000000001  81.68000000000001
      82.95999999999999  82.95000000000000
      83.48000000000000  83.53000000000000
      84.01000000000001  84.14000000000000
      84.80000000000000  84.66000000000000
      85.31000000000000  85.19000000000000
      85.83000000000000  85.99000000000000
      86.33000000000000  86.43000000000001
      86.86000000000000  86.95000000000000
      87.63000000000000  87.47000000000000
      88.13000000000000  87.98000000000000

  8. #8
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    En travaillant sur des float, ce problème sera malheuresement toujours présent,

    voir la : Pourquoi 0.3-0.2-0.1 est-il différent de 0 ?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

Discussions similaires

  1. problème de syntaxe avec ROUND
    Par seb.garcia dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 02/05/2011, 17h16
  2. Problème avec Round()
    Par bonpat01 dans le forum Langage
    Réponses: 5
    Dernier message: 27/11/2007, 17h42
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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