2011-01-06 23 views
6
vol = Decimal.Round(exposure.Volatility, 5); 

Esto no me deja rondaanulable Ronda decimal a 5 decimales

exposure.Volatility 

a un decimal b/c es decir la conversión de decimal? a decimal no puede tener lugar.

¿Cómo redondeo ese número a 5 decimales? Es un decimal con nulos.

Respuesta

13

Suponiendo un valor nulo es igual a cero en esta circunstancia, algo así como:

vol = exposure.Volatility.HasValue ? Decimal.Round(exposure.Volatility.Value, 5) : 0; 

Si "vol" es también nullable luego hacer:

vol = exposure.Volatility.HasValue ? Decimal.Round(exposure.Volatility.Value, 5) : null; 
+0

+1 para verificar primero el valor ;-) –

+0

Después de haber sido mordido por eso unas cuantas veces, pensé que sería una buena idea. :) – Sapph

+0

se está comprobando antes, pero bien cuidado – slandau

0
vol = Decimal.Round(exposure.Volatility.Value, 5); 
+0

Esto lanzará 'InvalidOperationException' si la variable no tiene un valor. –

+0

Sí lo hará. Supongo que si utiliza tipos que aceptan valores nulos, está verificando la propiedad .HasValue en algún lugar antes de llamar a la propiedad .Value. –

1

Usar la Nullable 's Value propiedad:

vol = Decimal.Round(exposure.Volatility.Value, 5); 
+1

Esto lanzará 'InvalidOperationException' si la variable no tiene un valor. –