source

음수 탐지

gigabyte 2023. 8. 27. 22:43
반응형

음수 탐지

PHP에서 숫자가 음수인지 감지할 수 있는 방법이 있는지 궁금합니다.

다음 코드가 있습니다.

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

저는 그것이.$profitloss부정적이고 만약 그렇다면, 저는 그것이 사실이라는 것을 다시 한번 강조해야 합니다.

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.

이것이 당신이 찾던 것이라고 생각합니다.

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은 위험한 함수이므로 숫자가 음수인지 확인해야 하는 경우에만 사용하십시오.

:-)

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

당신은 확인할 수 있습니다.$profitloss < 0

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

오해하지 마세요, 하지만 당신은 이런 식으로 할 수 있어요 ;)

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!

숫자에 -1을 곱해서 결과가 양성인지 확인하면 됩니다.

이와 같은 삼원 연산자를 사용하여 하나의 라이너로 만들 수 있습니다.

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

숫자가 음수인지 찾아서 올바른 형식으로 표시하는 것이 주요 아이디어라고 생각합니다.

PHP 5.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

3원 연산자로 쉽게 달성할 수 있습니다.

$is_negative = $profitloss < 0 ? true : false;

저는 라라벨 프로젝트를 위해 헬퍼 기능을 작성했지만 어디서나 사용할 수 있습니다.

function isNegative($value){
    if(isset($value)) {
        if ((int)$value > 0) {
            return false;
        }
        return (int)$value < 0 && substr(strval($value), 0, 1) === "-";
    }
}

언급URL : https://stackoverflow.com/questions/6135275/detecting-negative-numbers

반응형