Bonjour a tous !! Suite à cette discussion, j'ai tout refait mon programme avec VS 2015 et là...je doit faire exactement l'inverse de ce que je demandais à la base !!!
Donc je suis en VB.NET et je dois convertir automatiquement (en appuyant sur TAB ou avec la méthode Key_Press) convertir une donnée en pouces décimal en pouces Fractionaire ex: Si je tape 24.875, quand je changerai de TextBox, ce sera écrit 24 7/8 ?!?
J'ai essayer plusieurs méthodes dont celle d'Euclide mais le code ne fonctionne qu'avec les chiffres après la virgule !!
J'ai donc ceci mais j'ai une erreur :
ce test est fait avec 2 TextBox et un Boutton mais je préférerais qu'il fonctionne au TAB ou au KeyPress mais j'ignore comment BIEN appeler la procédure !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 Public Class Form1 Function GetFraction(ByVal d As Double) As String ' Get the initial denominator: 1 * (10 ^ decimal portion length) Dim Denom As Int32 = CInt(1 * (10 ^ d.ToString.Split("."c)(1).Length)) 'Erreur ici si je met 0 dans le textbox1 !! ' Get the initial numerator: integer portion of the number Dim Numer As Int32 = CInt(d.ToString.Split("."c)(1)) ' Use the Euclidean algorithm to find the gcd Dim a As Int32 = Numer Dim b As Int32 = Denom Dim t As Int32 = 0 ' t is a value holder ' Euclidean algorithm While b <> 0 t = b b = a Mod b a = t End While 'Get whole part of the number Dim Whole As String = d.ToString.Split("."c)(0) ' Return our answer Return Whole & " " & (Numer / a) & "/" & (Denom / a) End Function Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Text2.Text = GetFraction(Text1.Text) '<--- Jai une erreur ici : "La conversion de la chaîne "2.5" en type 'Double' n'est pas valide." End Sub End Class
et en plus de l'erreur de type Double...si je met 0 dans le textbox j'ai aussi une erreur !!
Merci de m'aider !!!
![]()
Partager