SoloCodigo
CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: 0skar en Miércoles 1 de Noviembre de 2006, 15:43
-
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.
-
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);