Chiffre decimal

cs_colby Messages postés 126 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 14 novembre 2022 - 21 nov. 2009 à 17:28
cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 - 22 nov. 2009 à 19:43
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

cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
21 nov. 2009 à 18:13
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
0
cs_akzo Messages postés 133 Date d'inscription dimanche 23 juin 2002 Statut Membre Dernière intervention 3 janvier 2015 3
21 nov. 2009 à 18:37
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
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
21 nov. 2009 à 22:44
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
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
21 nov. 2009 à 22:53
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
22 nov. 2009 à 18:54
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]
0
cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
22 nov. 2009 à 19:43
Malin le coup du 0.04
0
Rejoignez-nous