PHP:测试两个双变量会在不更改变量的情况下给出不同的结果

标签 php linux variables cgi embedding

在我的代码中,我有两个 double 值。让我们称它们为 $a$b。现在我想测试哪个更大,所以我写了以下内容:

print ($a > $b ? "larger\n" : "smaller\n");
print ($a > $b ? "larger\n" : "smaller\n");

奇怪的是结果是

larger
smaller

有没有人遇到过类似的问题?这个问题只出现在我们使用php-cgi的嵌入式linux系统上。

感谢您的回答和建议。

这是完整的代码:我需要将一个十六进制值解码为一个关于符号的十进制值,并最终使用大于整数大小的数字

function decodeInteger($datahex)
{
    // ignore non hex characters
    $hex = preg_replace('/[^0-9A-Fa-f]/', '', $datahex);

    // converted decimal value as double:
    $dec = hexdec($hex) * 1.0;

    // maximum decimal value based on length of hex + 1:
    //   number of bits in hex number is 8 bits for each 2 hex-characters -> max = 2^n
    //   use 'pow(2.0,n)' since '1 << n' and 'pow(2,n)' is only for integers and therefore limited to integer size.
    $max = pow(2.0, 4 * (strlen($hex) + (strlen($hex) % 2)));

    // complement = maximum - converted hex:
    $_dec = $max - $dec;


    print ($dec > $_dec ? "larger\n" : "smaller\n");
    print ($dec > $_dec ? "larger\n" : "smaller\n");

    // if dec value is larger than its complement we have a negative value (first bit is set)
    return $dec > $_dec ? -$_dec : $dec;
}

最佳答案

请运行

var_dump($dec); var_dump($_dec); var_dump($dec); var_dump($_dec);
print ($dec > $_dec ? "larger\n" : "smaller\n");

var_dump($dec); var_dump($_dec); var_dump($dec); var_dump($_dec);
print ($dec > $_dec ? "larger\n" : "smaller\n");

并在此处发布输出。 (很抱歉将此作为答案发布,但我的 Stackoverflow 声誉还不允许发表评论)

关于PHP:测试两个双变量会在不更改变量的情况下给出不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2863594/

相关文章:

java - 从服务访问静态变量

c++ - 使用头文件/源文件时访问类变量时出现问题

php - GD 库图像生成不适用于 mySQL 查询

r - 如何从 R 中的另一个函数调用的函数中提取变量的名称?

php - MySQL 加入特定的 WHERE 子句

linux - 在带有 sqlite 绑定(bind)的 tcl 中, "eval"命令没有为 "ATTACH DATABASE"做任何事情

java - 打开文件时如何在 emacs 中自动缩进?

linux - 使用没有文件系统的硬盘来处理大数据

php - 如何使用 Rails 发送电子邮件

java - 两个运算符之间的 AND 如何工作?