2010-08-25 5 views
3

Wow ... Je n'ai jamais vu ça auparavant. Un moyen de contourner le problème?L'opérateur '<' ne peut pas être appliqué à des opérandes de type 'bool' et 'double'

foreach(double r in portfolioReturns) 
     { 
      if (-8.0 < r < -7.0) 
      { 
       n8++; 
      }} 
+0

Question bonus de ferroutage: quelles langues effectivement permettre cela? – anthony

+0

@anthony: Python fait. –

+1

J'espère sincèrement que vous ne formaterez pas vos accolades comme cela dans le code de production. – siride

Répondre

11

Vous faites efficacement ce

if ((-8.0 < r) < -7.0) 

Depuis (-8,0 < r) est évaluée à une valeur booléenne, vous ne pouvez pas le comparer à un flotteur. Est-ce que ceci:

if (-8.0 < r && r < -7.0) { 
    //code here 
} 
5
if (-8.0 < r && r < -7.0) 
1
foreach(double r in portfolioReturns) 
{ 
    if(-8.0 < r && r < -7.0) 
      n8++; 
} 
3

laissez-moi deviner, vous venez de python? C'est le seul langage que je connaisse où cela fonctionne :-)

en regardant (-8.0 < r < -7.0), d'abord, -8,0 < r est évalué, ce qui est vrai. vrai < -7,0 barfs.

3

Vous pouvez également utiliser LINQ, en plus de tout le monde fixe si rapidement fourni

n8 += portfolioReturns.Count(r => -8.0 < r && r < -7.0); 
Questions connexes