begin process at 2012 02 13 08:36:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Algorithme

 > 

Maths

 > 

arrondir données


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

arrondir données

vendredi 16 novembre 2007 à 08:34:11 | arrondir données

ketchups

Hello tous le monde,

J'aurai besoins d'un petit peu d'aide.

Je suis entrant de faire un programme qui fait des calcules et j'aimerai pouvoir arrondir mes données à une décimal. Et donc arrondi de cette manière :

23.565578775

23.5

 

Si quelqu'un aurait une idée ..

vendredi 16 novembre 2007 à 08:49:48 | Re : arrondir données

lolokun

Salut,

Utilises la fonction Round :
Math.Round(tavaleur,1)
vendredi 16 novembre 2007 à 12:41:03 | Re : arrondir données

ketchups

j'ai essayé mais sa ne fonctionne pas...
j'ai oublié de précisier que je fais des calcule dans une feuille excel
donc ma valeur c'est une variable ...
vendredi 16 novembre 2007 à 13:00:51 | Re : arrondir données

jmfmarques

Membre Club
"j'ai oublié de précisier que je fais des calcule dans une feuille excel"

Ah bon ?

Nous n'aurions pas cru
(Thèmes /VB.NET et VB 2005 / Algorithme / Maths / arrondir données )

Alors ?
vendredi 16 novembre 2007 à 14:14:41 | Re : arrondir données

ketchups

pourrais-tu alors m'indiquer la section appropriée ou je pourrais poster mon message?
vendredi 16 novembre 2007 à 15:13:37 | Re : arrondir données

us_30

Membre Club
Cherche pas midi à quatorze heure ! voici le code :

=

Function Arrondi(Nb, ByVal Nb_Chiffre As Integer) As Double
'Arrondi Nb à Nb_Chiffre
If Not IsNumeric(Nb) Then
    Arrondi = Int(Val(Replace(Nb, ",", ".")) * 10 ^ Nb_Chiffre + 0.5) / 10 ^ Nb_Chiffre
Else
    Arrondi = Int(Nb * 10 ^ Nb_Chiffre + 0.5) / 10 ^ Nb_Chiffre
End If
End Function

=

Pour l'utiliser dans le code de ta macro :

=

Sub ess()
MsgBox Arrondi(23.565578775, 1)
End Sub

=

qui renvoi 23,6 (et non 23,5 ! normal on arrondi au plus près)

Amicalement,
Us.
samedi 17 novembre 2007 à 12:23:29 | Re : arrondir données

JMO

Membre Club


 Bonjour à tous,

Effectivement, Round ou FormatNumber arrondissent.

2 exemples qui renvoient 23.5

MonNombre = 23.56557877

MsgBox Replace(Left(MonNombre,Len(FormatNumber(MonNombre,1))),",",".")

TabNbre = Split(MonNombre,",")
MsgBox TabNbre(0) & "." & Left(TabNbre(1),1)


jean-marc
samedi 17 novembre 2007 à 22:17:38 | Re : arrondir données

us_30

Membre Club
ben... j'préfère encore ma solution... Quand j'arrondi je préfère que se soit au plus près... (on peut d'ailleurs facilement ma function pour faire un arrondi par défaut ou par excès...)... et pis utiliser des instructions qui utilise des chaines dans un calcul, je trouve que cela est un contre sens...

Amicalement,
Us.
dimanche 18 novembre 2007 à 08:32:32 | Re : arrondir données

JMO

Membre Club


 Bonjour à tous,

Bonjour us_30,
La fonction Round peut s'utiliser différemment:

MsgBox "FormatNumber" &vbTab&       Replace(FormatNumber(MonNombre,1),",",".") &vbCrLf& _
       "Round"        &vbTab&vbTab& Replace(Round(MonNombre,1),",",".")          


 jean-marc
dimanche 18 novembre 2007 à 11:19:10 | Re : arrondir données

us_30

Membre Club
Réponse acceptée !

Bonjour JMO,

Je ne suis pas convaincu par tes solutions... Je détaille le pourquoi.

En premier lieu, FormatNumber renvoi un type String, or si on arrondi un nombre, c'est parce qu'on fait du fait (en principe), donc dans une programmation structurée on déclare le type des variables. Et pour celles destinées aux calculs, on aura un truc du genre :

Dim V as double

OR, on ne pourra faire ensuite V=formatNumber([expression numérique STRING], .......) car il va y avoir une incompatibilité avec le typage... donc on va être obligé d'utiliser une conversion de type avec VAL ou autre CDBL... C'est donc mettre une couche supplémentaire, et tant qu'on peut éviter... ben, j'évite...

Ensuite ROUND... Normalement, cette fonction doit arrondir un nombre numérique, donc la remarque ci-dessus ne tient plus... Oui, c'est vrai. Mais, elle a un BUG !! En effet, l'arrondi de 1.25, à un chiffre donne 1.2... au lieu de 1.3.... par chance !

D'ailleurs, essaye ton code avec 1.25... et tu obtiendra deux résultats différents... dommage...

Ton code :

Sub ess()
monnombre = InputBox("Nombre à arronidr", "Chercher l'erreur", 1.25)
MsgBox "FormatNumber" & vbTab & Replace(FormatNumber(monnombre, 1), ",", ".") & vbCrLf & _
       "Round" & vbTab & Replace(Round(monnombre, 1), ",", ".")
End Sub

=

A la réflexion, je propose une version améliorée de ma fonction "arrondi" :

Function Arrondi(nb, ByVal Nb_Chiffre As Integer, OptionalByVal Sens = 0.5) As Double
'Arrondi Nb à Nb_Chiffre
'Option Sens : 0.5 => au + Près | 0 => Par Défaut | 1 => Par Excès
If Not IsNumeric(nb) Then nb = Val(Replace(nb, ",", "."))
Arrondi = Int(nb * 10 ^ Nb_Chiffre + Sens) / 10 ^ Nb_Chiffre
End Function

Ma fonction a donc les avantages suivants :
- Pas de problème d'arrondi !
- Traite une expression numérique en Variant,
- Possibilité d'arrondir par défaut ou par excès. (ou autre d'ailleurs en regardant "Sens")

Amicalement,
Us.


1 2

Cette discussion est classée dans : données, arrondir


Répondre à ce message

Sujets en rapport avec ce message

base de données [ par kwed ] bonjour à tous,Je voudrais ajouter un module de recherche sur une base de données gérée par un objet msflexgrid...En fait j'ai réussi à ressortir du t Données Binaires de la Base de registre. [ par Steph21 ] Avant tout, je me présente ! Je débute actuellement le VB (version 5), et j'ai déjà utilisé le VBA 97 et 2K.Passons aux choses sérieuses :)J'aimerai e Base de données sur VB [ par HATEM ] Je désire recevoir un exemple simple de base données developpé sue VB Manipulation des données dans un texte !! [ par beber ] debutant 100% voir plus !Recherche comment ouvrir un fichier contenant des variables X et Y d'une fonction. Puis d'arriver sous VB à les recuperer pou echange de données entre executable [ par thierry ] Bonjour,JE souhaiterais savoir s'il est possible avec VB d'échanger des infos entre programmes.exe.Exemple : Dans Un.exe j'ai un programme qui gère de Operation sur une table avec VB [ par H.laalouj ] Question 1:J'aimerais avoir un exemple d'acces à une table d'une base de données avec les differentes operations de manipulation de données: Ajout, Re Echange de données entre .exe [ par BTP ] Pblm : j'aurais besoin d'envoyer un mot sélectionné dans une application quelconque vers un dico et que ce dernier devienne actif.On m'a parlé des act Problème d'emission de données sur un port série [ par Lolo ] Plusieurs collègues et moi même avont constaté un bug du contrôle activeX MSComm32.ocxEn effet lors de l'envoi de données sur le port série en XOn Xof Problème d'emission de données sur un port série [ par Lolo ] Plusieurs collègues et moi même avont constaté un bug du contrôle activeX MSComm32.ocxEn effet lors de l'envoi de données sur le port série en XOn Xof problème Base de données [ par Fab ] Bonjour,Je travaille à la conception d'un outil (Systeme d'Information Territorial)d'aide à la décision. Je développe sur VB 6 et MapObject.Je suis no


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,491 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales