![]() |
una simple función, un grave problema..
Buenas, el caso es que necesito hacer una simple función que me calcule lo siguiente :
( 35 + 2*(111 - 7,5*log10(5-1) - 95) = 59 todos los datos serán recogidos por textfield y guardados en variables DOUBLE ( ya que la función log10 no puede trabajar con enteros) Aki os pongo el código ke he kreado, pero el problema es que el resultado que me dá no es 59, sino 76.03!!!! Smax := StrToFloat(Edit1.text); // le meto 95 SmaxLimite := StrToFloat(Edit2.Text); // 111 n_canales := StrToFloat(Edit6.Text); // 5 S_I_tipo := 35.0; un_canal := n_canales - 1.0; // debería dar 4, si le meto 5 rest_ci := -7.5*(Log10(un_canal)); Edit5.Text := FloatToStr(S_I_tipo + 2.0*(Smaxlimite - rest_ci - Smax)); // muestro el resultado en un textfiled. el problema es que esto no me dá el resultado correcto ( en papel y con la calculadora) alguien podría ayudarme ? seguro que es una tontería vamos :) |
Un Saludo. |
Por cierto eso me recuerda a esto que tuve que hacer cierto día:
//Como no hubo manera de hacerla funcionar la he tenido que desglosar //en cuatro secciones. Código:
IF nEncesta > 0 |
lo primero gracias marcoszorrilla por contestar, llevo como 3 dias con esta tontería que no logro hacer funcionar :)
lo que dices en tu 1º post, claro que funciona, pero el problema ocurre cuando todos los parámetros de la función se obtienen de 3 o 4 textfield y se guardan en Double no sé pq motivo no da el resultado 56!!! ( dá 76!!) con respecto a tu 2º mensaje, no te he entendido lo que has explicado. por cierto y para hacer el antilog ? sería con la funcion power ? ejemplo : Power(10,23/10); // antilog(23) ó 10^(23/10); Gracias por adelantado :) |
Pues convendría mostrar el valor que tiene cada uno despues de la conversión a Double, ahí puede estar el problema, que obtienes más o menos decimales.
En cuanto al segundo ejemplo que pongo no tiene nada que ver con Delphi está hecho con Clipper, pero es un ejemplo de como a veces una función hay que dividirla en pasos para racionalizarla, esta función en una calculadora científica funcionaba y también en la hoja de cálculo, el problema el tipo de cálculo que utilizaba Clipper, por lo que para hacerla funciona la tuve que dividir en 4 tramos como vés. Un Saludo. |
Por cierto en la unidad Math, también existen estás funciones:
Un Saludo. |
madre mia si es pa matarme jajaja
gracias marcoszorrilla sugerir que valla mostrando todos los valores y así ver el error :) pues no tiene más misterio aki me he ekivocao xDDD rest_ci := -7.5*(Log10(un_canal)); Edit5.Text := FloatToStr(S_I_tipo + 2.0*(Smaxlimite - rest_ci - Smax)); // muestro el resultado en un textfiled. normal -----> - - = + solucion : rest_ci := +7.5*(Log10(un_canal)); gracias de nuevo por las funciones jeje saludos |
La franja horaria es GMT +2. Ahora son las 05:42:07. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi