Nuevo en C#

25/03/2007 - 03:41 por Heberto Villavicencio | Informe spam
Saludos, estoy dando mis primeros pasos en C#, me recuerda mis tiempos de
pascal (hace unos 20 años aprox.) entiendo que C# es un lenguaje altamente
tipeado, ahora bien dentro de las pruebas de principiante que estoy haciendo
me encuentro con esto:

mValor = this.numericUpDown1.Value / 100;

Form1.ActiveForm.Opacity = mValor;

Error 1 No se puede convertir implícitamente el tipo 'decimal' en 'float'.
Ya existe una conversión explícita (compruebe si le falta una conversión)



es evidente que algo estoy haciendo mal. pero no doy con el problema, se que
es una tonteria, pero bueno recurro a ustedes, gracias por su ayuda
 

Leer las respuestas

#1 Diego Jancic
25/03/2007 - 04:05 | Informe spam
On Mar 24, 10:41 pm, "Heberto Villavicencio"
wrote:
Saludos, estoy dando mis primeros pasos en C#, me recuerda mis tiempos de
pascal (hace unos 20 años aprox.) entiendo que C# es un lenguaje altamente
tipeado, ahora bien dentro de las pruebas de principiante que estoy haciendo
me encuentro con esto:

mValor = this.numericUpDown1.Value / 100;

Form1.ActiveForm.Opacity = mValor;

Error 1 No se puede convertir implícitamente el tipo 'decimal' en 'float'.
Ya existe una conversión explícita (compruebe si le falta una conversión)

es evidente que algo estoy haciendo mal. pero no doy con el problema, se que
es una tonteria, pero bueno recurro a ustedes, gracias por su ayuda



Hola,
El problema es que Form1.ActiveForm.Opacity es del tipo float, y
mValor es del tipo decimal. Como un tipo decimal tiene mas precision
que un tipo float, VS no se arriesga a perder esa informacion. Si el
caso fuese al revez, y queres asignar algo de tipo float a un decimal
no hay problema porque estas extendiendo la precision, no pasa nada...
Lo que tenes que hacer es castear el valor a float, para especificarle
que la perdida de precision no te importa. En realidad el casteo es
otra cosa, pero en este caso el error se produce por eso.

Tendrias que hacer:
Form1.ActiveForm.Opacity = (float) mValor;


Saludos!,
Diego

Preguntas similares