• Viernes 8 de Noviembre de 2024, 12:35

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - Anónimo

Páginas: [1]
1
VB .NET / ¿double, Decimal U Otro Tipo De Datos?
« en: Viernes 21 de Marzo de 2008, 17:28 »
Buenas.

Estoy haciendo un programa de matemáticas para el cual necesito mucha precisión pero .net me trae de cabeza....  :angry:  El caso es que necesito manejar datos con muchos decimales y para ello pensé que sería buena opción utilizar el tipo de datos double porque tiene mayor rango de datos pero a la hora de la verdad no sé que decir. Hasta ahora no había tenido "errores" pero ha llegado un momento, que al tener tantos añadidos mi programa me he visto obligado a releer el código, entender lo que quería hacer en su día y reescribirlo. Pues bien eso he hecho en unas partes porq se repetía el código y todo funciona como antes pero al ir a tocar una parte... todo mal. Me gustaría dejar el nuevo código pues ocupa 13 lineas muchas más visibles q no 72 como antes... pero no me deja  :lightsabre: . Antes de pasar a explicar os dejo el código:
Dim resultado As Decimal = (CDbl(resta2) - CDbl(resta1))
        If CStr(resultado).Contains(",") Then
            Dim decimales As String() = CStr(resultado).Split(",")
            If decimales(0) = "0" Then
                resultado = System.Math.Pow(10, (-1 * CInt(decimales(1).Length)))
            Else
                resultado = System.Math.Pow(10, (CInt(decimales(0).Length)))
            End If
        Else
            Dim enteros As String = CStr(resultado)
            resultado = System.Math.Pow(10, CInt(enteros.Length))
        End If
        ii = resultado / 1000 ' número a devolver
Bien tengo que restar 2 números y devolver un número que tenga un decimal o un entero más que el resultado de la resta... vamos a ver para q nos entengamos copio un cachito del antiguo código
 If (CDbl(resta2) - CDbl(resta1)) < CDbl(0.000000000001) And fijado = False Then
                            ii = 0.000000000000001
                            fijado = True
                        ElseIf (CDbl(resta2) - CDbl(resta1)) < CDbl(0.00000000001) And fijado = False Then
                            ii = 0.00000000000001
                            fijado = True
                        ElseIf
En el primero me dice q si es más pequeño q eso (12 decimales) se devuelva el número más pequeño con 14 decimales. Después dice que si es más pequeño que 11 decimales se devuelva uno de 13 y así hasta pasar de decimales a enteros bueno con decimales pero q no son 0, algo bien altos.
Pues bien tan contento que estaba yo y el payaso de VB dice que 49,1 - 48,2 (q son 0,9) es 0,89999999899999899  :lightsabre: ..... una cosa así. Claro para mí eso tendría q ser 1 decimal y me iría bien pero como el señorito dice q son un huevo de decimales pues se calcula para ese huevo de decimales y no podría truncar porque como se necesita mucha precisión si el número es muy pequeñito pues... ¿Sabéis de alguna manera como se consiga una precisión buena? Me recomendáis utilizar double, decimal u otro tipo de datos? He probado este código con decimal y aunque mejoraba el resultado se queda muy lejos de antiguo código...
Bueno muchas gracias  :smartass:  :hola:

2
Programación de Videojuegos / Ayuda Por Favor!
« en: Jueves 21 de Julio de 2005, 02:25 »
Hola soy nuevo en este foro. He estado buscando sitios de programación de videojuegos y por lo que veo este es el único lugar que parece bueno y es en español. Pues bien, mi problema es el que todas las personas tienen al comenzar con esto. No se programar videojuegos. Me gustaría encontrar un tutorial para aprender pero no encuentro nada. he buscado un montón de tutoriales de directx y no lo encuentro. Por casualidad no me podriáis decir como empezar? Muchas gracias a quien me conteste.
PD. No sé como he llegado aquí. No sé si este foro es para algún lenguaje concreto. Sé programar con Visual Basic (tengo el 6.0) y con el VB.NET (tengo la 2ª beta del 2005). También se programar con el c++ builder. Si lo pudiera conseguir, cnseguiría el 5.0. Eso es todo muchas gracias de nuevo

Páginas: [1]