我想知道是否无论如何都要检测PHP中的数字是否为负数?
我有以下代码
$profitloss = $result->date_sold_price - $result->date_bought_price;
我需要找出$ profitloss是否为负数...如果是,我需要回应它是否。
答案 0 :(得分:176)
我相信这就是你要找的东西:
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是一个危险的函数,因此只有当你确实需要确定一个数字是否为负值时才使用它。
: - )
答案 1 :(得分:144)
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 :(得分:18)
if(x < 0)
if(abs(x) != x)
if(substr(strval(x), 0, 1) == "-")
答案 3 :(得分:7)
您可以查看是否$profitloss < 0
if ($profitloss < 0):
echo "Less than 0\n";
endif;
答案 4 :(得分:5)
if ( $profitloss < 0 ) {
echo "negative";
};
答案 5 :(得分:2)
不要误解我的意思,但你可以这样做;)
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!
答案 6 :(得分:1)
($profitloss < 0) ? echo 'false' : echo 'true';
答案 7 :(得分:0)
我认为主要的想法是找出数字是否为负并以正确的格式显示。
对于那些使用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
答案 8 :(得分:0)
将数字乘以-1,检查结果是否为正。
答案 9 :(得分:0)
使用三元运算符可以轻松实现。
$is_negative = $profitloss < 0 ? true : false;
答案 10 :(得分:0)
我为我的 Laravel 项目编写了一个 Helper 函数,但可以在任何地方使用。
function isNegative($value){
if(isset($value)) {
if ((int)$value > 0) {
return false;
}
return (int)$value < 0 && substr(strval($value), 0, 1) === "-";
}
}