Autor Tema: calculo en pto flotante y sacar por lcd con exactitud en proton  (Leído 2242 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado TREMENS

  • PIC16
  • ***
  • Mensajes: 125
calculo en pto flotante y sacar por lcd con exactitud en proton
« en: 02 de Diciembre de 2006, 14:23:19 »
introduzco tres digitos por teclado y con ellos armo el decimal de la siguiente forma que con al calculadora da perfecto: decimalcompleto=deci1/10+deci2/100+deci3/1000

i
pero siempre saca por lcd mal el último decimal. Ejemplo: introduzco 456, por lo que haciendo los calculos como indico arriba deberia dar 0.456 y sacar ese valor por lcd. En ligar de ello saca 0.455.

porgrama:
dim deci1 as byte....
...
...
dim decimal1 as float
dim decimal2 as float
......


armodecimal:
decimal1=deci1/10
decimal2=decimal1+deci2/100
decimalcompleto=decimal2+deci3/1000

cls
delayms 500
PRINT AT 1 , 1 ,"decimal=",dec decimal:delayms 3000

que está sucediendo ?????

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: calculo en pto flotante y sacar por lcd con exactitud en proton
« Respuesta #1 en: 02 de Diciembre de 2006, 14:28:59 »
¿Redondeo?

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re: calculo en pto flotante y sacar por lcd con exactitud en proton
« Respuesta #2 en: 02 de Diciembre de 2006, 14:43:58 »
Que tal TREMENS:

Algo que esta sucediendo es que el compilador en sus rutinas de punto flotante loq ue hace es redondear y por eso te muestra ese valor. Puedes intentar realizando la convercion a su numero entero primero y luego dividir entre 1000. Esto suena a que matematicamente es lo mismo y lo es, pero a veces el compilador trabaja mejor si lo hace de esta manera.

dim deci1 as byte
dim deci2 as byte
...
dim unidades as byte
dim decenas as byte
dim centenas as word
dim valor as word
dim decimalcompleto as float


armodecimal:
centenas = deci1*100
decenas = deci2 * 10
unidades = deci3

valor = centenas + decenas + unidades
decimalcompleto = valor/1000

Como ves ahora unicamente tienes una variable que es del tipo flotante y no tres a las cuales les aplica redondeo

Espero esto te sirva.

Saludos.

Elreypic

Desconectado TREMENS

  • PIC16
  • ***
  • Mensajes: 125
Re: calculo en pto flotante y sacar por lcd con exactitud en proton
« Respuesta #3 en: 04 de Diciembre de 2006, 17:30:45 »
probe tu metodo y sigue sacando mal el numero , como puedo hacer

Desconectado TREMENS

  • PIC16
  • ***
  • Mensajes: 125
Re: calculo en pto flotante y sacar por lcd con exactitud en proton
« Respuesta #4 en: 04 de Diciembre de 2006, 18:18:32 »
ahora use tu metodo pero de otra manera, es decir sacando por lcd com odos numeros enteros separados por la coma

 PRINT AT 1 , 1 ,"Kp=", dec entero,".",dec decimal3:delayms 2000:RETURN

donde decimal3 es un entero , pero probando con 123 y 456 por ejmplo mesaca 123.000.456

que esta pasando ????? esta mal la forma en que hago el print???


 

anything