Type double en .Net

taita1 Messages postés 9 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 17 novembre 2009 - 8 déc. 2006 à 17:08
taita1 Messages postés 9 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 17 novembre 2009 - 8 déc. 2006 à 17:24
salut,


j'essaye de faire une petite application qui calcule la valeur de lamda par la méthode de newton (mes études en gestion de production), j'ai déclaré ma variable lamda "double", et à l'exécution,quand je tape un nombre décimal négatif, il me déclenche une exception, je ne sais pas quoi faire, aidez moi svp


voici le code:


Imports System.Console
Imports System.Math
Imports System
Module Module1
    Sub Main()
        Dim pdt As Integer
        Dim a As Integer
        Dim lamda As Double
        Dim i As Integer
        Dim nbrp As String
        Dim nbra As String
        Dim nbrl As String
        Dim pa As Integer
        'Dim somme As String
        Dim pb As Integer
        Dim pk As Double
        Dim ps As Double
        Dim eps = 0.001
        Dim solution As String
        Console.WriteLine("Saisissez le nombre de produits : ")
        nbrp = Console.ReadLine
        Console.WriteLine("Saisissez la valeur de A : ")
        nbra = Console.ReadLine
        Console.WriteLine("Saisissez la valeur de lamda : ")
        nbrl = Console.ReadLine
        pdt = Convert.ToInt32(nbrp)
        a = Convert.ToInt32(nbra)
        lamda = Convert.ToDouble(nbrl)
        For i = 1 To pdt
            Console.WriteLine("Saisissez la valeur de a : ")
            pa = Convert.ToInt32(Console.ReadLine)
            Console.WriteLine("Saisissez la valeur de bêta : ")
            pb = Convert.ToInt32(Console.ReadLine)
            Console.WriteLine("Saisissez la valeur de K : ")
            pk = Convert.ToDouble(Console.ReadLine)
            Console.WriteLine("Saisissez la valeur de S : ")
            ps = Convert.ToDouble(Console.ReadLine)

        Next
        While (som1(lamda, pdt, pa, pk, pb, ps, a) >= eps)
            lamda = fct(lamda, pdt, pa, pk, pb, ps, a)
        End While
        solution = Convert.ToString(lamda)
        Console.WriteLine("lamda*=" + solution)
        Console.ReadLine()
       
    End Sub

    Function som1(ByVal lamda As Double, ByVal pdt As Integer, ByVal pa As Integer, ByVal pk As Double, ByVal pb As Integer, ByVal ps As Double, ByVal a As Integer) As Double
        Dim resultat = 0
        Dim i As Integer
        For i = 0 To pdt
            resultat += pa * Sqrt((2 * pk * pb) / (ps - 2 * lamda * pa))
        Next

        resultat -= a
        Return resultat

    End Function
    Function som2(ByVal lamda As Double, ByVal pdt As Integer, ByVal pa As Integer, ByVal pk As Double, ByVal pb As Integer, ByVal ps As Double) As Double
        Dim resultat = 0
        Dim i As Integer
        For i = 0 To pdt
            resultat += Pow(pa, 2) * (Sqrt(2 * pk * pb)) / Pow(ps - 2 * pa * lamda, 1.5)
        Next
        Return resultat
    End Function

    Function fct(ByVal lamda As Double, ByVal pdt As Integer, ByVal pa As Integer, ByVal pk As Double, ByVal pb As Integer, ByVal ps As Double, ByVal a As Integer) As Double
        Return lamda - (som1(lamda, pdt, pa, pk, pb, ps, a) / som2(lamda, pdt, pa, pk, pb, ps))
    End Function
 
End Module

2 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
8 déc. 2006 à 17:21
C'est quoi le message d'erreur, et surtout sur quelle ligne ?

Certainement un problème de paramètres régionaux entre la ",' et le "."

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
taita1 Messages postés 9 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 17 novembre 2009
8 déc. 2006 à 17:24
il déclenche cette exception: " Le format de la chaîne d'entrée est incorrect."
0
Rejoignez-nous