Ver Mensaje Individual
  #3  
Antiguo 29-09-2003
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Reputación: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
¡Buen día a todos!

Rabata:

En Delphi existen dos funciones que te pueden servir: Round y SimpleRoundTo.

Round hace redondeo bancario al valor entero más cercano.

SimpleRoundTo hace redondeo aritmético asimétrico (yo le llamo asimétrico ascendente).

Por otra parte, actualmente estoy terminando unas funciones, que aparte de permitir redondear a precisiones decimales específicas (1, 2, 3... decimales), también permiten indicar uno de cinco tipos de redondeo posibles:

Bancario (predeterminado de Round, norma internacional "al par")
Asimétrico ascendente (predeterminado de SimpleRoundTo)
Asimétrico descendente
Simétrico ascendente
Simétrico descendente

El término ascendente o descendente se refiere a la manera en que se redondea un número cuando la parte a redondear está exactamente entre el posible valor redondeado inferior y el superior (potencia decimal de 5: .5, .xxx5, 50, 500 etc.), es decir, cuando es ascendente 0.5 sube a 1 y cuando es descendente 0.5 baja a 0.

La simetría o asimetría determina si se aplica la misma regla cuando el valor es negativo.

Para darte un ejemplo breve, en un sistema de facturación para el área comercial mexicana, establezco la variable TipoRedoNume (Tipo de Redondeo Numérico) a trnSimeDesc (Simétrico Descendente) al comienzo de la aplicación. Posteriormente puedo realizar llamadas a la función MonedRedoCent (Moneda Redondeada a Centavos), con la seguridad de que los cálculos monetarios serán redondeados según las normas mercantiles y fiscales de México.

Cuando gustes te puedo hacer llegar una copia de la biblioteca donde tengo dichas funciones.

Espero esto sea de utilidad. Seguimos en contacto.

Al González .
Responder Con Cita