Página 1 de 1

calculo com float

MensagemEnviado: 29 Nov 2010 10:39
por cristian
é a primeira vez q trablaho com float e ta dadno erro no calculo

queria um analize de voces
Código: Selecionar todos

unsigned char Tabela1[]={0,5,10,15,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200};

float p9[22]={0.3,0.9,1.25,1.65,2.2,3.3,3.7,4.20,4.60,4.95,5.30,5.60,5.95,6.30,6.65,7.00,7.35,7.70,8.05,8.40,8.40};

  unsigned char x,y,valorlido,TabSup,TabInf;
   float ff2,PontSup,PontInf;
   char varfloat[15];


valorlido=25;//simuala o valor lido = 25
y=0;
// varre a tabela1 em busca do intervalod de valores
for(x=1;x<=22;x++)
{
if((valorlido>tabela1[y])&&(valorlido<tabela1[++y]))
   {
   PontSup=p9[y]; //  ler o ponto alto da tabela p9
   TabSup=tabela1[y]; // ler o ponto alto da tabela 1
   y--;
   PontInf=p9[y];
   TabInf=tabela1[y];
    break;

   }
}
// formula
subtrai o valor lido do valor inferior tabela 1
tabela 1 p9
5           0.3
10         0.9
15         1.25
20         1.65
30         2.2

o valor lido = 25 esta entre 20 e 30
salva o valor superior da tabela1 e P9
   PontSup=p9[y]; // 2.2
   TabSup=tabela1[y]; // 30
salva o valor inferior da tabela1 e P9
   PontInf=p9[y]; //1.65
   TabInf=tabela1[y]; //20

calculo

 ff2=(((PontInf+(valorlido-TabInf))*(PontSup-PontInf))/(TabSup-TabInf));
 
   FloatToStr(ff2, varfloat);
   T6963C_write_text(varfloat,5, 5, T6963C_ROM_MODE_XOR);




veja ai onde estou errando, aformula ja revisei toda é esta mesmo , ta montada no excel e la bate certo

era pra dar 1.925 ta dando 7.91999e-1

MensagemEnviado: 29 Nov 2010 11:52
por cristian
resolvido a seqeuncia da formula tava errada

Código: Selecionar todos
ff2=(PontInf+(((valorlido-TabInf)*(PontSup-PontInf))/(TabSup-TabInf)));

MensagemEnviado: 29 Nov 2010 14:42
por ze
disponha