2017-10-15 3 views
0

Ma question est sur pourquoi j'obtiens cette erreur si j'ai défini toutes les variables comme Float64. Il ne devrait pas y avoir de problème.Julia - MethodError: aucune méthode ne correspond moins (:: Float64, :: Tuple {Int64, Int64})

Voici le code et le message que je reçois

pr = Array{Float64}(1001) 
succ = Array{Float64}(1001) 

pr1 = Float64 
pr2 = Float64 
pr3 = Float64 
pr4 = Float64 
pr5 = Float64 

succ1 = Float64 
succ2 = Float64 
succ3 = Float64 
succ4 = Float64 
succ5 = Float64 

pr1 = 100,0 
pr2 = 80,0 
pr3 = 50,0 
pr4 = 30,0 
pr5 = 0,0 

succ1 = 0,5 
succ2 = 0,6 
succ3 = 0,85 
succ4 = 0,95 
succ5 = 1 

x = Float64 

for x = 1:1:1001 
pr[x]= (x-1)/10 

if pr[x] == pr5 
    succ[x] = succ5 
elseif pr[x] < pr4 
    succ[x] = succ4 + (succ5 - succ4) * (pr5 - pr[x])/(pr4-pr5) 
elseif pr[x] < pr3 
    succ[x] = succ3 + (succ4 - succ3) * (pr4 - pr[x])/(pr3-pr4) 
elseif pr[x] < pr2 
    succ[x] = succ2 + (succ3 - succ2) * (pr3 - pr[x])/(pr2-pr3) 
elseif pr[x] < pr1 
    succ[x] = succ1 + (succ2 - succ1) * (pr2 - pr[x])/(pr1-pr2) 
elseif pr[x] == pr1 
    succ[x] = succ1 

end 

println(succ[x]) 

end 

Il doit faire probablement avec des nombres entiers et flottants types, mais je ne vois pas comment comme je l'ai défini tout comme Float64

Répondre

5

Ne pas faites ceci: pr1 = Float64. Vous pouvez penser que cela définit pr1 comme étant de type Float64, mais que vous définissez réellement pr1 comme un alias pour le nom de type Float64. Faites juste pr1 = 100.0 et Julia saura que c'est un Float64. Vous voulez probablement déclarer cette affectation const si, const pr1 = 100, si vous ne le changez pas.

De même, vous ne pouvez pas utiliser , comme séparateur décimal dans Julia. pr1 = 100,0 définit la valeur de pr1 sur le Tuple (100,0).