Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: luis456 en 24 Septiembre 2014, 17:47 pm



Título: Otro de mis fallos :(
Publicado por: luis456 en 24 Septiembre 2014, 17:47 pm
Tengo esta famosa rutina jejej :) y ahora se me ocurre dividir pero pero no sale :)

Código
  1. Result1 = {Num1 - 2, Num1 - 3, Num1 + 1, Num1 + 2, Num1 + 3} _
  2.        .Distinct().ToArray
  3.  
  4.  
  5. cuando le pongo el signo de divicion me sale error ??
  6.  
  7.  
  8. Result1 = {Num1 / 2, Num1 - 3, Num1 + 1, Num1 + 2, Num1 + 3} _
  9.        .Distinct().ToArray
  10.  
  11.  


error
No se puede convertir un valor de tipo '1-matriz dimensional de Double' en '1-matriz dimensional de Integer' debido a que 'Double' no se deriva de 'Integer'




Título: Re: Otro de mis fallos :(
Publicado por: kub0x en 24 Septiembre 2014, 17:57 pm
No se puede convertir un valor de tipo '1-matriz dimensional de Double' en '1-matriz dimensional de Integer' debido a que 'Double' no se deriva de 'Integer'

Básicamente estás asignando un valor de tipo double, fruto de la división, dentro de un array de enteros. La división implica una parte decimal, por lo que tendrás que hacer un cast a Int.

En cristiano...
Código
  1. Result1 = {Convert.ToInt32(Num1 / 2), Num1 - 3, Num1 + 1, Num1 + 2, Num1 + 3} _
  2.       .Distinct().ToArray
  3.  

Espero haber sido de ayuda.

Saludos!


Título: Re: Otro de mis fallos :(
Publicado por: luis456 en 24 Septiembre 2014, 18:16 pm
Básicamente estás asignando un valor de tipo double, fruto de la división, dentro de un array de enteros. La división implica una parte decimal, por lo que tendrás que hacer un cast a Int.

En cristiano...
Código
  1. Result1 = {Convert.ToInt32(Num1 / 2), Num1 - 3, Num1 + 1, Num1 + 2, Num1 + 3} _
  2.       .Distinct().ToArray
  3.  

Espero haber sido de ayuda.

Saludos!


Perfecto gracias  por una respuesta tan rapida :)


saludos
Luis

 



Título: Re: Otro de mis fallos :(
Publicado por: Eleкtro en 24 Septiembre 2014, 18:28 pm
Convertir a entero es realizar una conversion innecesarias, para evitarlo debes utilizar el operador de división correcto (el de enteros).


\ Operator (http://msdn.microsoft.com/en-us/library/0e16fywh.aspx)
Divides two numbers and returns an integer result.

/ Operator (http://msdn.microsoft.com/en-us/library/25bswc76.aspx)
Divides two numbers and returns a floating-point result.

Nota: Si además quieres obtener el pico más alto o el más bajo de la división, eso ya sería otro tema, mira el método Math.Ceiling() (http://msdn.microsoft.com/en-us/library/zx4t0t48%28v=vs.110%29.aspx) y Math.Floor() (http://msdn.microsoft.com/en-us/library/e0b5f0xb%28v=vs.110%29.aspx) y el resto de los métodos de esa Class.

Saludos.


Título: Re: Otro de mis fallos :(
Publicado por: luis456 en 24 Septiembre 2014, 18:41 pm
Convertir a entero es realizar una conversion innecesarias, para evitarlo debes utilizar el operador de división correcto (el de enteros).


\ Operator (http://msdn.microsoft.com/en-us/library/0e16fywh.aspx)
Divides two numbers and returns an integer result.

/ Operator (http://msdn.microsoft.com/en-us/library/25bswc76.aspx)
Divides two numbers and returns a floating-point result.

Nota: Si además quieres obtener el pico más alto o el más bajo de la división, eso ya sería otro tema, mira el método Math.Ceiling() (http://msdn.microsoft.com/en-us/library/zx4t0t48%28v=vs.110%29.aspx) y Math.Floor() (http://msdn.microsoft.com/en-us/library/e0b5f0xb%28v=vs.110%29.aspx) y el resto de los métodos de esa Class.

Saludos.

Gracias Elektro

Jo no sabia de tantas formas mmm  , me alegra ya que me meto en mas historias de calculos pero ya sabes elektro   lo que "  se avecina  " jajajjaj

saludos espero que estes bien

Luis




Título: Re: Otro de mis fallos :(
Publicado por: Pablo Videla en 24 Septiembre 2014, 19:06 pm
Convertir a entero es realizar una conversion innecesarias, para evitarlo debes utilizar el operador de división correcto (el de enteros).


\ Operator (http://msdn.microsoft.com/en-us/library/0e16fywh.aspx)
Divides two numbers and returns an integer result.

/ Operator (http://msdn.microsoft.com/en-us/library/25bswc76.aspx)
Divides two numbers and returns a floating-point result.

Nota: Si además quieres obtener el pico más alto o el más bajo de la división, eso ya sería otro tema, mira el método Math.Ceiling() (http://msdn.microsoft.com/en-us/library/zx4t0t48%28v=vs.110%29.aspx) y Math.Floor() (http://msdn.microsoft.com/en-us/library/e0b5f0xb%28v=vs.110%29.aspx) y el resto de los métodos de esa Class.

Saludos.
Tampoco sabía eso de la barra inversa retornaba el resultado a entero  :o :o esto aplica para .net en general? o es en varios lenguajes?


Título: Re: Otro de mis fallos :(
Publicado por: Eleкtro en 24 Septiembre 2014, 21:28 pm
esto aplica para .net en general? o es en varios lenguajes?

Se aplica a VB.Net (no a C#), no se si habrá otros lenguajes que compartan esta ventaja similitud de diseño, pero por el momento no lo he notado.

Saludos!


Título: Re: Otro de mis fallos :(
Publicado por: Pablo Videla en 24 Septiembre 2014, 21:40 pm
Se aplica a VB.Net (no a C#), no se si habrá otros lenguajes que compartan esta ventaja similitud de diseño, pero por el momento no lo he notado.

Saludos!

Ahh!! ok, gracias, ahora me quedo mas tranquilo (no toco vb.net no me agrada su sintaxis)  :xD

Saludos!


Título: Re: Otro de mis fallos :(
Publicado por: luis456 en 25 Septiembre 2014, 03:06 am
Realmente funciona :)


Código
  1. Result2 = {Num2 + 1, Num2 + 2, Num2 + 3, Num2 \ 1, Num2 \ 2} _
  2.                  .Distinct().ToArray


Gracias elektro

Luis