Bonjour à tous,

Je cherche à traduire un programme depuis vba vers java!
J'espère que je suis sur le bon forum...
Le programme en vba est le suivant:
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
 
Function MonteCarloStandardOption ( 
  CallPutFlag As String, S As Double, X As Double, T As Double,  
  r As Double, b As Double, v As Double,  
  nSteps As Integer, nSimulations As Integer) As Double 
  Dim dt As Double, St As Double 
  Dim Sum As Double, Drift As Double, vSqrdt As Double 
  Dim i As Integer, j As Integer, z As Integer 
  dt = T / nSteps 
  Drift = (b - v^2 / 2) * dt 
  vSqrdt = v * Sqr(dt) 
  If CallPutFlag=”c” Then 
    z = 1   
  ElseIf CallPutFlag=”p” Then 
    z = -1 
  EndIf 
  For i = 1 to nSimulations 
    St = S 
    For j = 1 to nSteps 
      St = St * Exp(Drift + vSqrdt * Application.NormalInv(Rnd(),0,1)) 
    Next 
    Sum = Sum + Max (z * (St – X), 0) 
  Next 
  MonteCarloStandardOption = Exp (-r * T) * (Sum / nSimulations) 
End Function

J'ai déjà codé ceci en java:

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
public double calcul(){
			int z = 0; 
			double st; 
			double dt = t/ nSteps;
			double drift = (b - (v*v) / 2) * dt; 
			double vSqrdt = v * java.lang.Math.sqrt(dt);
			Random rand = new Random(); 
			double sum = 0; 
 
			if ("c".equals(callPutFlag)){
				z=1; 
			}
			else if ("p".equals(callPutFlag)){
				z=-1; 
			}
			for (int i=1; i<=nSimulations; i++){
				st = s; 
				for (int j=1; j<nSteps; j++){
					st = st * java.lang.Math.exp(drift + vSqrdt * rand.nextGaussian()); 
				}
				sum = sum + java.lang.Math.max(z*(st-x), 0); 
			}
			double result = java.lang.Math.exp((-r*t)*(sum/nSimulations)); 
 
			return result; 
		}

Eclipse compile mais le prix affiché par mon prg java n'est pas le bon...

Est-ce que quelqu'un pourrait me dire ce qu'il en pense? J'ai déjà vérifier et j'ai traduit tel que je le comprend ...

Merci d'avance!