Deux chiffres après la virgule

germany1970 Messages postés 136 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 22 mars 2014 - 24 juil. 2010 à 16:15
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 5 nov. 2011 à 21:17
Bonjour,
j'ai un textbox1 oû je veux afficher le résultat d'une addition.
alors j'ai :textbox2 = 15,5
textbox3 = 14.33
textbox1=val(textbox2.text) + val(textbox3.text)
alors mon problème c'est que le résultat s'affiche arrondi sans chiffre après la virgule (29).
merci de me montrer comment je peux afficher les deux chiffres après la virgule
merci pour votre aide.





















free advertising
A voir également:

9 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
24 juil. 2010 à 18:02
Salut

Non, ton code, chez moi, fournit 29,33

On a bien les décimales, mais elle sont incomplètes car le format des chiffres à utiliser dans les calculs impose un point en guise de décimale (ta TextBox1 a une virgule).

Par contre, l'affichage des données utilise le format local, et affichera une virgule si ton Windows est en français.

Il faut donc convertir les virgules par des points, systématiquement, avant de faire des calculs.

Tu dois pouvoir trouver des exemples en recherchant des sources .Net sur le site avec le terme "textbox numérique"

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_christoni Messages postés 140 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 1 novembre 2010 7
24 juil. 2010 à 21:56
Bonsoir,
à tester dans un formulaire avec les 3 textbox :
Imports System.Globalization
Imports System.Threading

Public Class Form1
    '*** Clonage des "Options régionales" du panneau de configuration.
    '    (CultureInfo représentant la culture régionnale de l'ordinateur). 
    Public maCI As CultureInfo = CultureInfo.CurrentCulture
    Public maCIclone As CultureInfo = CType(maCI.Clone(), Globalization.CultureInfo)

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        '*** Utilisation du clone pour modifier certains paramètres de la culture de base
        '    qui s'appliqueront à la culture du thread en cours.
        '    On impose le "." comme séparateur décimal, pour les machines qui ont
        '    dans leur configuration la virgule. (Dans cette config., la conversion
        '    de String en Décimal n'accepte pas le ".", comme d'ailleurs toutes les 
        '    autres fonctions de conversion (CType,...), la fonction Parse, 
        '    les mise en forme ToString.)
        '    (Voir Panneau de configuration --> Options régionales, date, heure et langue
        '    --> Options régionales et linguistiques --> Personnaliser (symbole décimal)).
        '    On pourra ainsi employer le "." du pavé numérique pour entrer un nombre 
        '    à décimales.
        '    Pour la présentation des données, on utile les paramètres de base.
        '*** En résumé, on utilise la culture clonée pour le traitement, et la
        '    culture de base de l'ordinateur pour la présentation.
        maCIclone.NumberFormat.NumberDecimalSeparator = "."
        Thread.CurrentThread.CurrentCulture = maCIclone
    End Sub

    Private Sub TextBox2_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.Validated
        If Not TextBox2.Text = "" Then
            Dim d As Double = CDbl(TextBox2.Text)
            TextBox2.Text = d.ToString("N", maCI)
            If Not TextBox3.Text = "" Then
                TextBox1.Text = (CDbl(TextBox2.Text) + CDbl(TextBox3.Text)).ToString("N", maCI)
            End If
        End If
    End Sub

    Private Sub TextBox3_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox3.Validated
        If Not TextBox3.Text = "" Then
            Dim d As Double = CDbl(TextBox3.Text)
            TextBox3.Text = d.ToString("N", maCI)
            If Not TextBox2.Text = "" Then
                TextBox1.Text = (CDbl(TextBox2.Text) + CDbl(TextBox3.Text)).ToString("N", maCI)
            End If
        End If
    End Sub
End Class
0
najnoujj Messages postés 8 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 5 novembre 2011
5 nov. 2011 à 11:15
Public Function nombre_decimale(ByVal x As Double, ByVal n As Integer) As String
Dim nd As String = ""
Dim dec As String = ""
Dim d As Array = Split(x.ToString, ",")
If d.Length > 1 Then
dec = d(1)
Else
dec = "0"
End If

If dec.Length >= n Then
dec = Mid(dec, 1, n)
Else
For i As Integer = dec.Length To x - 2
dec = dec & "0"
Next
End If
nd = (CInt(x).ToString) & "," & dec
Return nd
End Function
0
najnoujj Messages postés 8 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 5 novembre 2011
5 nov. 2011 à 11:17
Public Function nombre_decimale(ByVal x As Double, ByVal n As Integer) As String
        Dim nd As String = ""
        Dim dec As String = ""
        Dim d As Array = Split(x.ToString, ",")
        If d.Length > 1 Then
            dec = d(1)
        Else
            dec = "0"
        End If

        If dec.Length >= n Then
            dec = Mid(dec, 1, n)
        Else
            For i As Integer = dec.Length To x - 2
                dec = dec & "0"
            Next
        End If
        nd = (CInt(x).ToString) & "," & dec
        Return nd
    End Function



Salut à tous
0

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

Posez votre question
najnoujj Messages postés 8 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 5 novembre 2011
5 nov. 2011 à 12:25
Public Function nombre_decimale(ByVal x As Double, ByVal n As Integer) As String
        Dim nd As String = ""
        Dim dec As String = ""
        Dim d As Array = Split(x.ToString, ",")
        If d.Length > 1 Then
            dec = d(1)
        Else
            dec = "0"
        End If

        If dec.Length >= n Then
            dec = Mid(dec, 1, n)
        Else
            For i As Integer = dec.Length To n - 1
                dec = dec & "0"
            Next
        End If
        nd = (CInt(x).ToString) & "," & dec
        Return nd
    End Function


Salut à tous
utilisation:
'afficher un nombre saisie dans une zone de texte avec 3 chiffre après la virgule
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MsgBox(nombre_decimale(TextBox1.Text, 3))
    End Sub
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 235
5 nov. 2011 à 12:29
Bonjour, najnoujj,
trois "posts" à la suite avec une "soluce à la split", en réponse à une question "enterrée" depuis plus d'un an.
Dis-moi : juste une question : "CDec, tu connais ?"
A utiliser si virgule (et c'est tout !)

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
najnoujj Messages postés 8 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 5 novembre 2011
5 nov. 2011 à 12:53
Salut "ucfoutu",

bon primo j'arrive pas à supprimer les posts, secondo je connais "CDec" mais elle nous aide pas a donner exactement le nombre de chiffre qu'on veux afficher après la virgule, si t'a une autre idée vous êtes le bienvenue
0
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 56
5 nov. 2011 à 21:17
Salut

il faut savoir ton séparateur décimal c'est une
virgule 15,5
ou un point 14.33

Dim x As Double
Dim y As Double
Dim res As Double
        
If Double.TryParse(TextBox2.Text, x) And Double.TryParse(TextBox3.Text, y) Then
    res = x + y
    TextBox1.Text = res.ToString("#0.00")
End If
0
raffika Messages postés 269 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 12 mars 2011
24 juil. 2010 à 18:03
Salut, il faut que tu mettes les deux valeurs
dans une variable (avec virgule) donc voici la liste des
variables, trouves en une qui te convient :
http://msdn.microsoft.com/fr-fr/library/47zceaw7(VS.80).aspx
Ensuite tu affiches le résultat dans textbox3 en additionnant tes deux variables.
-1