• Martes 21 de Enero de 2020, 21:16

Autor Tema:  Conversion de tipos  (Leído 713 veces)

0skar

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Conversion de tipos
« en: Miércoles 1 de Noviembre de 2006, 15:43 »
0
Gracias. Tengo otra duda con respecto a un problemita que tengo con variables del tipo decimal y double, y es el siguiente: Yo tengo un proceso sencillo el cual crea una variable del tipo decimal, luego le asigna a otra variable decimal el resultado de la primera por un numero como 8.75, de la siguiente forma:

         decimal factor = 6.7;

         decimal total = factor * 8.75;
         this.textBox1.Text = Convert.ToString(total);

Y me da 2 errores: primero, aparece que no puedo asignar el valor de 6.7 a la variable factor porque dice que es del tipo double, y luego aparece que no puedo utilizar el * con variables o valores de los tipos double y decimal, por lo que a veces quiero usar una variable del tipo decimal ,pero me da ese problema y la pongo double para que ya no me de problema, pero quisiera enntender porque sucede esto, o porque no pudeo operar variables o valores de un tipo numerico como un decimal, con un double, o algo asi.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Conversion de tipos
« Respuesta #1 en: Miércoles 1 de Noviembre de 2006, 16:02 »
0
El tipo decimal es un tipo de datos de 128 bits, comparado con float el tipo decimal tiene una mayor precisión y un intervalo más reducido, lo que lo hace adecuado para cálculos financieros y monetarios.

Intervalo aproximado               

±1.0 × 10e−28 a ±7.9 × 10e28  

Precisión     
28-29 dígitos significativos


por defecto en C# los literales de punto flotante se trataran como tipo double por lo cual te arroja el error, asi que tal como sucede con los tipos float para los cuales debes colocar una f despues del numero y de esta forma el literal se considera float:

7.25f

el tipo decimal debe poner una m ( m de money)

7.25m

Sabiendo esto...

decimal factor = 6.7m;

decimal total = factor * 8.75m;
//o bien
decimal total = (decimal)(factor * 8.75);
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io