2009-04-21 7 views

Répondre

14

Le problème est que vous faites une division entière (résultats également dans un int) et un int peut être converti implicitement à la fois double et decimal. Par conséquent, vous devez vous assurer que l'expression entraîne l'un de ceux-ci; double est probablement ce que vous voulez.

Math.Round(new FileInfo(strFilePath).Length/1024.0, 1) 
40
Math.Round(new FileInfo(strFilePath).Length/1024d, 1) 
+5

Ceci est bien mieux que la réponse acceptée, vous ne devriez pas implicitement jeté à l'aide » .0" , en utilisant le suffixe « d » est explicite et préféré. – user275587

+1

Mieux oui, mais l'explication dans la réponse acceptée quant à _why_ est extrêmement utile. – jmgardn2

3
Math.Round((double) (new FileInfo(strFilePath).Length/1024), 1) 
+0

pourquoi est-ce un 1 négatif? S'il vous plaît expliquez-vous négatif évaluateur afin que nous comprenions pourquoi vous l'avez fait. Il me semble logique de le lancer comme il l'a fait. – PositiveGuy

+0

Ça ne marche pas – Anton

+0

Je ne suis pas d'accord avec le vote négatif puisque la réponse est correcte si vous supervisez l'erreur facile à faire. Mais vous avez dû mettre le 'nouveau FileInfo (strFilePath) .Length/1024' entre parenthèses pour le faire fonctionner. –

Questions connexes