math - app - Calcula el porcentaje guardado entre dos números?
math formula watch (7)
100% - precio con descuento / precio completo
Tengo dos números, el primero es el precio original, el segundo es el precio con descuento.
Necesito calcular qué porcentaje ahorra un usuario si compra al segundo precio.
example
25, 10 = 60%
365, 165 = 55%
Lo que no sé es la fórmula para calcular esto.
Esta es una función con opción invertida
Volverá:
- ''change'' - cadena que puede usar para la clase css en su plantilla
- ''resultado'' - resultado simple
- ''formateado'' - resultado formateado
function getPercentageChange( $oldNumber , $newNumber , $format = true , $invert = false ){
$value = $newNumber - $oldNumber;
$change = '''';
$sign = '''';
$result = 0.00;
if ( $invert ) {
if ( $value > 0 ) {
// going UP
$change = ''up'';
$sign = ''+'';
if ( $oldNumber > 0 ) {
$result = ($newNumber / $oldNumber) * 100;
} else {
$result = 100.00;
}
}elseif ( $value < 0 ) {
// going DOWN
$change = ''down'';
//$value = abs($value);
$result = ($oldNumber / $newNumber) * 100;
$result = abs($result);
$sign = ''-'';
}else {
// no changes
}
}else{
if ( $newNumber > $oldNumber ) {
// increase
$change = ''up'';
if ( $oldNumber > 0 ) {
$result = ( ( $newNumber / $oldNumber ) - 1 )* 100;
}else{
$result = 100.00;
}
$sign = ''+'';
}elseif ( $oldNumber > $newNumber ) {
// decrease
$change = ''down'';
if ( $oldNumber > 0 ) {
$result = ( ( $newNumber / $oldNumber ) - 1 )* 100;
} else {
$result = 100.00;
}
$sign = ''-'';
}else{
// no change
}
$result = abs($result);
}
$result_formatted = number_format($result, 2);
if ( $invert ) {
if ( $change == ''up'' ) {
$change = ''down'';
}elseif ( $change == ''down'' ) {
$change = ''up'';
}else{
//
}
if ( $sign == ''+'' ) {
$sign = ''-'';
}elseif ( $sign == ''-'' ) {
$sign = ''+'';
}else{
//
}
}
if ( $format ) {
$formatted = ''<span class="going ''.$change.''">''.$sign.''''.$result_formatted.'' %</span>'';
} else{
$formatted = $result_formatted;
}
return array( ''change'' => $change , ''result'' => $result , ''formatted'' => $formatted );
}
La fórmula sería (original - discounted)/original
. es decir (365-165) / 365 = 0.5479 ...
Sé que esto es bastante viejo, pero pensé que era tan bueno como cualquiera para poner esto. Encontré una publicación de Yahoo con una buena explicación:
Let''s say you have two numbers, 40 and 30.
30/40*100 = 75.
So 30 is 75% of 40.
40/30*100 = 133.
So 40 is 133% of 30.
The percentage increase from 30 to 40 is:
(40-30)/30 * 100 = 33%
The percentage decrease from 40 to 30 is:
(40-30)/40 * 100 = 25%.
These calculations hold true whatever your two numbers.
Veo que esta es una pregunta muy antigua, pero así es como calculo la diferencia porcentual entre 2 números:
(1 - (oldNumber / newNumber)) * 100
Entonces, la diferencia porcentual de 30 a 40 es:
(1 - (30/40)) * 100 = +25% (meaning, increase by 25%)
La diferencia de porcentaje de 40 a 30 es:
(1 - (40/30)) * 100 = -33.33% (meaning, decrease by 33%)
En php, utilizo una función como esta:
function calculatePercentage($oldFigure, $newFigure) {
if (($oldFigure != 0) && ($newFigure != 0)) {
$percentChange = (1 - $oldFigure / $newFigure) * 100;
}
else {
$percentChange = null;
}
return $percentChange;
}
function calculatePercentage($oldFigure, $newFigure)
{
$percentChange = (($oldFigure - $newFigure) / $oldFigure) * 100;
return round(abs($percentChange));
}
((list price - actual price) / (list price)) * 100%
Por ejemplo:
((25 - 10) / 25) * 100% = 60%