20^20 = overflow

10/10/2005 - 17:43 por Ch0rY | Informe spam
Como puedo asignar el valor de esa operacion a una variable?

He probado como Decimal, Long, Int64, Integer y me da error de overflow
Si lo asigno a un string me da "1,048576E+26" (¿esto como se llamaba q no me
acuerdo?).

Pos eso como puedo obtener el resultado de la operación.

Gracias

Preguntas similare

Leer las respuestas

#6 Eduardo A. Morcillo [MS MVP VB]
11/10/2005 - 16:30 | Informe spam
Como Decimal sigue sin rular
Como Single me devuelve "Infinito"



Mmmm...

Esto me funciona sin problemas:

Dim dec As Decimal = 20 ^ 20
Dim sing As Single = 20 ^ 20
Dim doub As Double = 20 ^ 20

Console.WriteLine(dec.ToString("0"))
Console.WriteLine(sing.ToString("0"))
Console.WriteLine(doub.ToString("0"))

Como Double sigue dandome de resultado un valor ¿cientifico?



Bueno, eso es solo la conversion a texto cuando no se le da formato
especifico. Fijate como sale con el formato que le doy en el codigo de
arriba: 104857600000000000000000000

1.2994262207056124E+262, como puedo representarlo decimal, talcual



Ah, pero eso no es 20^20! 20^20 no tiene problemas en entrar en un Decimal y
Single, pero el numero que muestras aqui si. De todas formas el asunto es el
formato de la conversion a texto por lo que te refiero igual que antes al
codigo de arriba.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#7 Ch0rY
11/10/2005 - 17:35 | Informe spam
La operacion se lleva a cabo dentro de una Sub, que es llamada cuando se
generan unos controles en el formulario, por lo que el valor de los operandos
de la operacion, se incrementan dependiendo de los valores de esos controles,
20^20, es solo el valor inicial.

la Sub es esta

Private Sub Calcula()
' Usar es un TextBox, con unos caracteres

Dim Combinaciones As Decimal
Combinaciones = CDec(Usar.Length ^ Usar.Length)
lblCombinaciones.Text = Combinaciones.ToString
End Sub



El Problema aparece, cuando Usar.Length > 21 el maximo que valdra sera 125

Perdón de nuevo, cuanto mas llevo en esto, mas pronto me impaciento.

Chory
Respuesta Responder a este mensaje
#8 José Manuel Agüero
11/10/2005 - 23:31 | Informe spam
Hola, Ch0rY:

El operador ^ (exponencial) nunca produce una excepción, ya que los operandos se convierten al tipo Double antes de realizar la operación.
La excepción se puede producir al intentar convertir el resultado a otro tipo de datos, en tu caso, a Decimal. Esto es porque Double puede contener valores mayores que Decimal.MaxValue.

Además, creo que lo que tú quieres es que el resultado no se represente en notación científica. Esto no tiene nada que ver con el tipo de datos de la variable en la que almacenas el valor, sino con la conversión al tipo de datos String. Yo dejaría tu procedimiento así:

Private Sub Calcula()
' Usar es un TextBox, con unos caracteres

Dim Combinaciones As Double
Combinaciones = Usar.Length ^ Usar.Length
lblCombinaciones.Text = Combinaciones.ToString("#")
End Sub

O incluso:
lblCombinaciones.Text = (Usar.Length ^ Usar.Length).ToString("#")


Saludos.


"Ch0rY" escribió en el mensaje news:
| La operacion se lleva a cabo dentro de una Sub, que es llamada cuando se
| generan unos controles en el formulario, por lo que el valor de los operandos
| de la operacion, se incrementan dependiendo de los valores de esos controles,
| 20^20, es solo el valor inicial.
|
| la Sub es esta
|
| Private Sub Calcula()
| ' Usar es un TextBox, con unos caracteres
|
| Dim Combinaciones As Decimal
| Combinaciones = CDec(Usar.Length ^ Usar.Length)
| lblCombinaciones.Text = Combinaciones.ToString
| End Sub
|
|
|
| El Problema aparece, cuando Usar.Length > 21 el maximo que valdra sera 125
|
| Perdón de nuevo, cuanto mas llevo en esto, mas pronto me impaciento.
|
| Chory
Respuesta Responder a este mensaje
#9 Ch0rY
12/10/2005 - 13:23 | Informe spam
Pos sí,debia ser ese el problema, xq funciona perfectamente como has indicado

Muchas gracias, y tomo nota, x si me surge otra vez.

chory
Respuesta Responder a este mensaje
#10 José Manuel Agüero
13/10/2005 - 00:09 | Informe spam
Me alegro de que te funcione. Si me permites una pregunta, ¿qué representa la expresión (Usar.Length ^ Usar.Length)? Eso no es un número de combinaciones, variaciones o permutaciones...

Saludos.


"Ch0rY" escribió en el mensaje news:
| Pos sí,debia ser ese el problema, xq funciona perfectamente como has indicado
|
| Muchas gracias, y tomo nota, x si me surge otra vez.
|
| chory
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida