2009-04-21 15 views

risposta

14

Il problema è che si effettua una divisione intera (risultati anche in un int) e un int può essere convertito in modo implicito sia double e decimal. Pertanto, è necessario assicurarsi che l'espressione risulti in uno di questi; double è probabilmente quello che vuoi.

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

Questo è il modo migliore rispetto alla risposta accettata, non si dovrebbe implicitamente espressi con" 0,0" , utilizza 'D' il suffisso è esplicito e preferito. – user275587

+1

Meglio sì, ma la spiegazione nella risposta accettata per _why_ è estremamente utile. – jmgardn2

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

perché è negativo 1? Per favore, spiegaci te stesso, quindi capiamo perché l'hai fatto. Sembra logico per me solo lanciarlo come ha fatto lui. – PositiveGuy

+0

Non funziona – Anton

+0

Non sono d'accordo con il voto negativo poiché la risposta è corretta se si controlla l'errore facile da fare. Ma hai dovuto inserire il 'nuovo FileInfo (strFilePath) .Length/1024' tra parentesi per farlo funzionare. –

Problemi correlati