php - suma - Detectando números negativos
suma y resta de numeros negativos (9)
Asumo que la idea principal es encontrar si el número es negativo y mostrarlo en el formato correcto.
Para aquellos que usan PHP5.3 podrían estar interesados en usar la clase de formateador de números - http://php.net/manual/en/class.numberformatter.php . Esta función, así como el rango de otras cosas útiles, pueden formatear su número.
$profitLoss = 25000 - 55000;
$a= new /NumberFormatter("en-UK", /NumberFormatter::CURRENCY);
$a->formatCurrency($profitLoss, ''EUR'');
// would display (€30,000.00)
Aquí también una referencia a por qué se utilizan los paréntesis para los números negativos: http://www.open.edu/openlearn/money-management/introduction-bookkeeping-and-accounting/content-section-1.7
Me preguntaba si hay alguna forma de detectar si un número era negativo en PHP.
Tengo el siguiente código
$profitloss = $result->date_sold_price - $result->date_bought_price;
Necesito descubrir si $ profitloss es negativo ... si es que necesito hacerme eco de lo que es.
Creo que esto es lo que estabas buscando:
class Expression {
protected $expression;
protected $result;
public function __construct($expression) {
$this->expression = $expression;
}
public function evaluate() {
$this->result = eval("return ".$this->expression.";");
return $this;
}
public function getResult() {
return $this->result;
}
}
class NegativeFinder {
protected $expressionObj;
public function __construct(Expression $expressionObj) {
$this->expressionObj = $expressionObj;
}
public function isItNegative() {
$result = $this->expressionObj->evaluate()->getResult();
if($this->hasMinusSign($result)) {
return true;
} else {
return false;
}
}
protected function hasMinusSign($value) {
return (substr(strval($value), 0, 1) == "-");
}
}
Uso:
$soldPrice = 1;
$boughtPrice = 2;
$negativeFinderObj = new NegativeFinder(new Expression("$soldPrice - $boughtPrice"));
echo ($negativeFinderObj->isItNegative()) ? "It is negative!" : "It is not negative :(";
Sin embargo, tenga en cuenta que eval es una función peligrosa, por lo tanto, úsela solo si realmente necesita descubrir si un número es negativo.
:-)
No me malinterpretes, pero puedes hacerlo de esta manera;)
function nagitive_check($value){
if (isset($value)){
if (substr(strval($value), 0, 1) == "-"){
return ''It is negative<br>'';
} else {
return ''It is not negative!<br>'';
}
}
}
Salida:
echo nagitive_check(-100); // It is negative
echo nagitive_check(200); // It is not negative!
echo nagitive_check(200-300); // It is negative
echo nagitive_check(200-300+1000); // It is not negative!
Podrías comprobar si $profitloss < 0
if ($profitloss < 0):
echo "Less than 0/n";
endif;
Simplemente multiplique el número por -1 y verifique si el resultado es positivo.
if ( $profitloss < 0 ) {
echo "negative";
};
if ($profitloss < 0)
{
echo "The profitloss is negative";
}
Edit : Siento que esta fue una respuesta demasiado simple para el representante, así que aquí hay algo que también puede encontrar útil.
En PHP podemos encontrar el valor absoluto de un entero usando la función abs()
. Por ejemplo, si estuviera tratando de resolver la diferencia entre dos figuras, podría hacer esto:
$turnover = 10000;
$overheads = 12500;
$difference = abs($turnover-$overheads);
echo "The Difference is ".$difference;
Esto produciría The Difference is 2500
.
if(x < 0)
if(abs(x) != x)
if(substr(strval(x), 0, 1) == "-")
($profitloss < 0) ? echo ''false'' : echo ''true'';