2 votos

Dividir un entero en la suma de dos enteros con factor porcentual usando ceil y floor

He encontrado un problema en un software que utilizo para facturar. Tengo una variable (cantidad) entera A que quiero dividir en una suma de dos enteros utilizando un porcentaje p donde $A1 = p*A$ y $A2 = (1-p)*A$ .

Actualmente el software utiliza una función de redondeo. Pero como toma un porcentaje del valor y lo redondea a dos enteros, la ecuación (muy a menudo) deja de ser cierta. Es decir, la suma de A1 y A2 no es A.

Más formalmente: Sea A sea un número entero positivo ( $A \in Z^+$ ) y $p \in [0,1]$ . Quiero $A = A1+A2$ donde $A1, A2 \in Z^+$

Se me ocurrió esto

$$A = \lfloor{p*A\rfloor} + \lceil{(1-p)*A\rceil}$$

donde hago uso de la función floor y ceil. ¿Tiene sentido, es esto cierto?

2voto

player3236 Puntos 1422

Sí. Desde: $$A - \lfloor p*A \rfloor = A + \lceil -p*A \rceil = \lceil A - p*A \rceil$$ Sin embargo, dado que su software está utilizando una función de redondeo, sería mejor establecer: $$A1 = rnd(p*A) \text{ and } A2 = A - A1$$ Entonces no es necesario invocar las funciones de suelo/techo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X