Подтвердить что ты не робот

Обнаружение отрицательных чисел

Мне было интересно, есть ли способ определить, является ли число отрицательным в PHP?

У меня есть следующий код:

$profitloss = $result->date_sold_price - $result->date_bought_price;

Мне нужно выяснить, является ли $profitloss отрицательным, и если это так, мне нужно повторить, что это так.

4b9b3361

Ответ 1

if ($profitloss < 0)
{
   echo "The profitloss is negative";
}

Изменить. Я чувствую, что это слишком простой ответ для репутации, поэтому вот что-то, что вы также можете найти полезным.

В PHP мы можем найти абсолютное значение целого числа с помощью функции abs(). Например, если бы я пытался определить разницу между двумя цифрами, я мог бы это сделать:

$turnover = 10000;
$overheads = 12500;

$difference = abs($turnover-$overheads);

echo "The Difference is ".$difference;

Это приведет к The Difference is 2500.

Ответ 2

Я считаю, что это то, что вы искали:

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) == "-");
    }
}

Применение:

$soldPrice = 1;
$boughtPrice = 2;
$negativeFinderObj = new NegativeFinder(new Expression("$soldPrice - $boughtPrice"));

echo ($negativeFinderObj->isItNegative()) ? "It is negative!" : "It is not negative :(";

Однако обратите внимание, что eval является опасной функцией, поэтому используйте его, только если вам действительно нужно выяснить, является ли число отрицательным.

: -)

Ответ 3

if(x < 0)
if(abs(x) != x)
if(substr(strval(x), 0, 1) == "-")

Ответ 4

Вы можете проверить, есть ли $profitloss < 0

if ($profitloss < 0):
    echo "Less than 0\n";
endif;

Ответ 5

if ( $profitloss < 0 ) {
   echo "negative";
};

Ответ 6

Вы можете использовать троичный оператор, как этот, чтобы сделать его одним вкладышем.

echo ($profitloss < 0) ? 'false' : 'true';

Ответ 7

Просто умножьте число на -1 и проверьте, положителен ли результат.

Ответ 8

Не поймите меня неправильно, но вы можете сделать это;)

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>';
}
    }
}

Выход:

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!

Ответ 9

Я предполагаю, что основная идея - найти, является ли число отрицательным и отобразить его в правильном формате.

Для тех, кто использует PHP5.3, может быть интересно использовать Number Formatter Class - http://php.net/manual/en/class.numberformatter.php. Эта функция, а также ряд других полезных вещей могут форматировать ваш номер.

$profitLoss = 25000 - 55000;

$a= new \NumberFormatter("en-UK", \NumberFormatter::CURRENCY); 
$a->formatCurrency($profitLoss, 'EUR');
// would display (€30,000.00)

Здесь также ссылка на то, почему скобки используются для отрицательных чисел: http://www.open.edu/openlearn/money-management/introduction-bookkeeping-and-accounting/content-section-1.7