Esto parecerá una pregunta tonta para algunos, pero necesito usar un doble a decimal para usar como moneda. ¿A dónde va el M?C# arrojar una variable doble a decimal
decimal dtot = (decimal)(doubleTotal);
Esto parecerá una pregunta tonta para algunos, pero necesito usar un doble a decimal para usar como moneda. ¿A dónde va el M?C# arrojar una variable doble a decimal
decimal dtot = (decimal)(doubleTotal);
Sólo se utiliza el M
para un literal numérico, cuando lanzas que es justo:
decimal dtot = (decimal)doubleTotal;
Tenga en cuenta que un número de coma flotante no es adecuado para mantener un valor exacto, así que si usted añade por primera vez números juntos y luego convertir a Decimal
puede obtener errores de redondeo. Es posible que desee convertir los números al Decimal
antes de agregarlos, o asegúrese de que los números no sean números de punto flotante en primer lugar.
su uso en clase convertation defecto: Convert.ToDecimal(Double)
No porque arrojará una OverflowException doble vol_y = (doble) Decimal.MaxValue + 10E + 28D; Console.WriteLine ("Convert.ToDecimal (vol_y) =" + Convert.ToDecimal (vol_y)); – ToXinE
puede convertir un doble a un decimal como este, sin necesidad de la M
sufijo literal:
double dbl = 1.2345D;
decimal dec = (decimal) dbl;
Se debe utilizar la M
cuando se declara un nuevo decimal literal valor:
decimal dec = 123.45M;
(Sin la M
, 123.45 se trata como una doble y no se compilará.)
Convert.ToDecimal(the double you are trying to convert);
Realmente, ¿estás sugiriendo una llamada a un método Convert en lugar de un operador de conversión? –
He aprendido que la clase Convert es mucho más flexible y segura que un elenco en C#. – Tom
"Seguro"? como en cuando no puede emitir arroja una excepción en tiempo de ejecución en lugar de un error de compilación? Me han mordido tantas veces que evito convertir ... –
como pregunta de seguimiento, ¿por qué es necesaria la conversión explícita? Lo probé y recibí el error de que un doble no se puede convertir explícitamente en un decimal, ¿pero un decimal no tiene más precisión? (es decir, muy similar a la conversión de un int a un doble puede ser implícita). –
@Cortana: la precisión de un decimal es mayor, pero el rango es menor. Un valor doble puede estar fuera del rango de un decimal. Ver: http://stackoverflow.com/questions/7817866/why-cant-double-be-implicitly-cast-to-decimal – Guffa