multiplicacion variables uint

02/10/2007 - 09:20 por MoRpHeOo | Informe spam
Buenas grupo,

tengo una duda con la multiplicacion en csharp.

Cuando realizo lo siguiente no lo realiza como yo pienso que debiera
hacerlo,
¿ me podriais hechar una mano de como lo calcula?.

Gacias

uint a = 595842;
uint b = 3243641;
uint var = 0;

var = a * b;

Console.WriteLine("Valor de la multiplicacion: {0}",var);

Me devuelve: 4257224818 y no se bien como lo calcula.



MoRpHeOo

Preguntas similare

Leer las respuestas

#1 RFOG
02/10/2007 - 09:31 | Informe spam
El resultado de la multiplicación es mayor que el valor máximo que dicha
variable puede contener y se produce lo que se llama un desbordamiento u
overflow en inglés.

La solución pasa por usar Int64 en lugar de enteros normales, o utilizar la
clase Decimal, pero si mientras se trabaja en coma flotante siempre hay que
tener en cuenta el error de redondeo (recordemos el último fallo del excel),
en aritmética de enteros hay que tener en cuenta los desbordamientos.

Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
Donde acaba el deseo comienza el temor.

"MoRpHeOo" wrote in message
news:%
Buenas grupo,

tengo una duda con la multiplicacion en csharp.

Cuando realizo lo siguiente no lo realiza como yo pienso que debiera
hacerlo,
¿ me podriais hechar una mano de como lo calcula?.

Gacias

uint a = 595842;
uint b = 3243641;
uint var = 0;

var = a * b;

Console.WriteLine("Valor de la multiplicacion: {0}",var);

Me devuelve: 4257224818 y no se bien como lo calcula.



MoRpHeOo

Respuesta Responder a este mensaje
#2 MoRpHeOo
02/10/2007 - 09:45 | Informe spam
Ya lo tengo claro,

secciona la variable en el caso de que haya overflow y recoge los primeros
32 bits.

Gracias por todo


Si tiene alguna otra pregunta no dude en consultarnos.

Atentamente:

Dpto.Soporte - Revolution Software, S.L.
03160 Almoradí (Alicante) - Teléf. 902 889 656
- http://www.revolution.es

"RFOG" escribió en el mensaje
news:%
El resultado de la multiplicación es mayor que el valor máximo que dicha
variable puede contener y se produce lo que se llama un desbordamiento u
overflow en inglés.

La solución pasa por usar Int64 en lugar de enteros normales, o utilizar
la clase Decimal, pero si mientras se trabaja en coma flotante siempre hay
que tener en cuenta el error de redondeo (recordemos el último fallo del
excel), en aritmética de enteros hay que tener en cuenta los
desbordamientos.

Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
> Donde acaba el deseo comienza el temor.

"MoRpHeOo" wrote in message
news:%
Buenas grupo,

tengo una duda con la multiplicacion en csharp.

Cuando realizo lo siguiente no lo realiza como yo pienso que debiera
hacerlo,
¿ me podriais hechar una mano de como lo calcula?.

Gacias

uint a = 595842;
uint b = 3243641;
uint var = 0;

var = a * b;

Console.WriteLine("Valor de la multiplicacion: {0}",var);

Me devuelve: 4257224818 y no se bien como lo calcula.



MoRpHeOo





Respuesta Responder a este mensaje
#3 Octavio Hernandez
02/10/2007 - 10:13 | Informe spam
Más exactamente, se queda con los 32 bits menos significativos del
resultado.
Ten en cuenta q el lenguaje ofrece las instrucción checked para tratar los
posibles desboardamientos:

http://msdn2.microsoft.com/en-us/library/74b4xzyw(VS.71).aspx

Slds - Octavio



"MoRpHeOo" wrote in message
news:%232%23$
Ya lo tengo claro,

secciona la variable en el caso de que haya overflow y recoge los primeros
32 bits.

Gracias por todo


Si tiene alguna otra pregunta no dude en consultarnos.

Atentamente:

Dpto.Soporte - Revolution Software, S.L.
03160 Almoradí (Alicante) - Teléf. 902 889 656
- http://www.revolution.es

"RFOG" escribió en el mensaje
news:%
El resultado de la multiplicación es mayor que el valor máximo que dicha
variable puede contener y se produce lo que se llama un desbordamiento u
overflow en inglés.

La solución pasa por usar Int64 en lugar de enteros normales, o utilizar
la clase Decimal, pero si mientras se trabaja en coma flotante siempre
hay que tener en cuenta el error de redondeo (recordemos el último fallo
del excel), en aritmética de enteros hay que tener en cuenta los
desbordamientos.

Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
>> Donde acaba el deseo comienza el temor.

"MoRpHeOo" wrote in message
news:%
Buenas grupo,

tengo una duda con la multiplicacion en csharp.

Cuando realizo lo siguiente no lo realiza como yo pienso que debiera
hacerlo,
¿ me podriais hechar una mano de como lo calcula?.

Gacias

uint a = 595842;
uint b = 3243641;
uint var = 0;

var = a * b;

Console.WriteLine("Valor de la multiplicacion: {0}",var);

Me devuelve: 4257224818 y no se bien como lo calcula.



MoRpHeOo









Respuesta Responder a este mensaje
#4 RFOG
02/10/2007 - 10:39 | Informe spam
Hola, O.

Pero el rendimiento cae en picado, o al menos eso dice el amigo Hejlsberg
(no lo he probado personalmente, pero teniendo en cuenta una comprobación en
cada operación básica, posiblemente sea cierto).

Por cierto, ¿recibes mis correos y mis mensajes?

Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
Donde acaba el deseo comienza el temor.

"Octavio Hernandez" wrote in message
news:%

Más exactamente, se queda con los 32 bits menos significativos del
resultado.
Ten en cuenta q el lenguaje ofrece las instrucción checked para tratar los
posibles desboardamientos:

http://msdn2.microsoft.com/en-us/library/74b4xzyw(VS.71).aspx

Slds - Octavio



"MoRpHeOo" wrote in message
news:%232%23$
Ya lo tengo claro,

secciona la variable en el caso de que haya overflow y recoge los
primeros 32 bits.

Gracias por todo


Si tiene alguna otra pregunta no dude en consultarnos.

Atentamente:

Dpto.Soporte - Revolution Software, S.L.
03160 Almoradí (Alicante) - Teléf. 902 889 656
- http://www.revolution.es

"RFOG" escribió en el mensaje
news:%
El resultado de la multiplicación es mayor que el valor máximo que dicha
variable puede contener y se produce lo que se llama un desbordamiento u
overflow en inglés.

La solución pasa por usar Int64 en lugar de enteros normales, o utilizar
la clase Decimal, pero si mientras se trabaja en coma flotante siempre
hay que tener en cuenta el error de redondeo (recordemos el último fallo
del excel), en aritmética de enteros hay que tener en cuenta los
desbordamientos.

Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
>>> Donde acaba el deseo comienza el temor.

"MoRpHeOo" wrote in message
news:%
Buenas grupo,

tengo una duda con la multiplicacion en csharp.

Cuando realizo lo siguiente no lo realiza como yo pienso que debiera
hacerlo,
¿ me podriais hechar una mano de como lo calcula?.

Gacias

uint a = 595842;
uint b = 3243641;
uint var = 0;

var = a * b;

Console.WriteLine("Valor de la multiplicacion: {0}",var);

Me devuelve: 4257224818 y no se bien como lo calcula.



MoRpHeOo












email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida