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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPublic 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
'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
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