PHP中的负(负)零等于0?

Mic*_* LB 10 php mysql

我有一个非常基本的MySQL查询,它从数据库表中读取行,并将行值添加或减去定义为$ total_balance的PHP字符串.

例如;

$statement_details_query = mysqli_query($con,"SELECT transaction_nominal_code, SUM(transaction_debit) as TotalDebit, SUM(transaction_credit) as TotalCredit FROM accounts_transaction GROUP BY transaction_nominal_code") or die(mysql_error());

while($statement_details = mysqli_fetch_array( $statement_details_query )) {

$balance = $statement_details['TotalCredit'] - $statement_details['TotalDebit'];

$total_balance = $total_balance + $balance;

}

echo number_format($total_balance, 2, '.', ',');
Run Code Online (Sandbox Code Playgroud)

我的问题是,-0和0之间有什么区别?

Mar*_*c B 5

在 PHP 中,没有真正的区别:

漂浮:

php > $negZ = -0.0;
php > $posZ = +0.0;
php > var_dump($negZ == $posZ, $negZ === $posZ);
bool(true)
bool(true)
Run Code Online (Sandbox Code Playgroud)

内部:

php > $negZ = -0;
php > $posZ = +0;
php > var_dump($negZ == $posZ, $negZ === $posZ);
bool(true)
bool(true)
Run Code Online (Sandbox Code Playgroud)

  • 这是一个真正的区别:由于 PHP 5 中不知道负零浮点数,因此从 5 迁移到 7 时可能会遇到意外问题。我刚刚修复了一些旧 jpgraph 版本(php 图形库)中的一个错误,其中格式字符串中的精度计算为“-0”,随后在格式字符串中使用,变成“%01.-0f”,这是无效的,并且始终会产生字符串“0f”。 (2认同)