![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
La solución de calcular el valor absoluto y luego multiplicar o no por -1 me parece la más cómoda. No sé si sería más eficiente comprobar los valores:
Vamos, que no sé cómo está implementado "ABS", porque si el compilador la expande como hace, por ejemplo, con INC y DEC entonces creo que da lo mismo, casi.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi! - BAScript - Multi Language Scriptable Development Environment |
|
#2
|
||||
|
||||
|
Gracias Ñuño, creo que lo dejaré tal como está. Que conste que antes de hacer cosas como está pronuncio internamente "la polvora la inventaron los chinos...".
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
|
#3
|
||||
|
||||
|
Hola,
Creo que lo más adecuado es irse por el valor absoluto. Supuestamente ya está optimizada esta función y debería hacer uso de la instrucción ABS y/o FABS en assembler que justamente lo único que hacen es alterar el campo de signo. ![]() La ventaja del uso del valor absoluto es que no interesa si se ingresa positivo o negativo... siempre se obtiene el "lado positivo" y lo que nos resta por hacer es multiplicarlo por -1 en caso de ser necesario (que es más que evidente que solo aplica para cuando se requiere de los negativos) y no se necesita de hacer evaluaciones previas, como la que sugiere Nuño. Añadir un IF equivale a añadir un V(G) = 2. Dos IFs, son V(G) = 4. A mi humilde ver, me parece algo exagerado contar con una V(G) de 4 sólo para generar positivos y/o negativos. Cuanto mucho me podría preguntar si da lo mismo hacer:
Que:
Saludos, |
|
#4
|
||||
|
||||
|
También podrías evitar el condicional:
// Saludos |
|
#5
|
|||
|
|||
|
Hola,
tambien podrias asignar directamente el bit de paridad con un or (no recuerdo cual es) aunque supongo que es lo que debe hacer abs o algo bastante parecido. Saludos. |
|
#6
|
||||
|
||||
|
Yo también optaría por una solución como la de Román, dándole simetría aritmética al condicionante Boolean. Pero a esa variable le daría un significado positivo, es decir, la llamaría EsCargo (que de hecho es el sentido que adquiere el código de Román).
![]() Saludos. |
|
#7
|
||||
|
||||
|
Je, je. Me equivoqué. Sería así:
Por otro lado, también podría optarse por crear disparadores before insert y before update para asegurar las signaturas correctas en la base. // Saludos |
|
#8
|
||||
|
||||
|
Me gusta la solución de Román, gracias también al resto que me habeis dado pautas interesantes.
Decir que Es_Cargo es una variable de tipo Boolean que le paso desde el menú y que se analiza en el evento de apertura del formulario para saber cual de las dos opciones se está ejecutando. Por otra parte como veis el código va en el evento: Para que cada vez que se ejecute algún cambio en los datos se actualice el valor. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Saber Número negativo y pasarlo a positivo | BuRtOn | Varios | 3 | 19-09-2008 20:36:15 |
| Obtener numero de línea de código | Walterdf | Varios | 5 | 13-06-2008 11:28:29 |
| De un número, obtener el ASCII | Alexander | Varios | 2 | 26-05-2005 17:21:32 |
| obtener el numero de linea. | maruenda | Varios | 1 | 30-10-2004 05:11:05 |
| Obtener el número de conexiones a una BD | repo | Firebird e Interbase | 2 | 31-05-2004 18:46:00 |
|