Chiffre decimal

Signaler
Messages postés
124
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
29 mai 2020
-
Messages postés
221
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
13 décembre 2009
-
Bonsoir
Je voudrais arrondir un nombre 18,65 en 18,70.
En utilisant la fonction "Ceiling" 18,65 donne 19. Ce que je recherche est comment arrondir un chiffre a virgule avec deux décimales après la virgule juste au niveau des décimales et si le dernier n'est pas un 0 la partie décimale soit arrondie automatiquement au plus grand.
Donc si j'ai
14,67 = 14,70
14,11 = 14,20
14,19 = 14,20
Merci d'avance
Colby

6 réponses

Messages postés
221
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
13 décembre 2009
1
Salut Colby,

Je ne connais pas de fonction qui permette directement de faire ce que tu veux. Peut être quelqu'un de plus aguerri, pourra t'en donner une. En attendant, voilà une fonction qui pourra te dépanner:

Private Function ArrondiMaison(ByVal x As Double) As Double
  x = x * 10
  Return (Math.Truncate(x) + If((x - Math.Truncate(x))=0, 0, 1)) / 10
End Function
Messages postés
133
Date d'inscription
dimanche 23 juin 2002
Statut
Membre
Dernière intervention
3 janvier 2015
3
salut
peut etre comme ca aussi moins joli mais fonctionne

c = Int(Ton_Nombre) ' valeur entiere
a = (Ton_Nombre) - Int(Ton_Nombre))
d = Round(a, 1)

If a > d Then
Ton_Resultat = c + d + 0.1
Else
Ton_Resultat = c + d
End If

salutation
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
4
Essaye de transposer ceci (écrit en vb6) , ou toto est le nombre à traiter :

titi = (toto * 100) - (Int(toto) * 100)
If Not titi Mod 10 0 Then titi (titi \ 10) + 1 Else titi = titi / 10
MsgBox Int(toto) + titi / 10
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
4
en te précisant que le signe \ génère la division entière (l'entier d'une division) et que le signe / est celui d'une division normale.
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
salut,

ouh... que d'usines à gaz tout çà....


il faut utiliser les fonctions disponibles, parfois à adapter à peine :
    Function MyRound(ByVal dValue As Decimal) As Decimal
        Return Math.Round((dValue + 0.04D), 1, MidpointRounding.ToEven)
    End Function



exemple :
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim ad() As Decimal = {14.67D, 14.11D, 14.19D, 14.4D}

        For Each d As Decimal In ad
            Console.WriteLine("'{0}' donne '{1}'", d, MyRound(d))
        Next d
    End Sub



trace :
'14,67' donne '14,7'
'14,11' donne '14,2'
'14,19' donne '14,2'
'14,4' donne '14,4'


++
[hr]
Messages postés
221
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
13 décembre 2009
1
Malin le coup du 0.04