2009-04-21 73 views

Respuesta

14

El problema es que haga una división entera (resultados también en un int) y una int se puede convertir implícitamente tanto a double y decimal. Por lo tanto, debe asegurarse de que la expresión dé como resultado uno de esos; double es probablemente lo que quieres.

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

Esto es mucho mejor que la respuesta aceptada, no se debe utilizar de manera implícita fundido" 0.0" , el uso de 'd' sufijo es explícita y preferido. – user275587

+1

Mejor sí, pero la explicación en la respuesta aceptada sobre _why_ es extremadamente útil. – jmgardn2

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

¿por qué es este un negativo 1? Explícate evaluador negativo para que comprendamos por qué lo hiciste. Me parece lógico que lo haya lanzado como lo hizo. – PositiveGuy

+0

No funciona – Anton

+0

No estoy de acuerdo con el voto negativo porque la respuesta es correcta si supervisa el error fácil de hacer. Pero necesitó poner el 'nuevo FileInfo (strFilePath) .Length/1024' entre paréntesis para que funcione. –

Cuestiones relacionadas