测试文件:
<?php
$var = 0.28682926829268;
$roundedVar = round($var, 2);
var_dump($roundedVar);
var_dump(is_float($roundedVar));
echo "Rounded var: $roundedVar";
?>
输出:
float(0.28:)
bool(true)
Rounded var: 0.28:
注意var_dump和echo输出中0.28之后出现的奇怪冒号字符。
发现之后,我认为PHP必须以某种方式被破坏。所以我卸载并重新安装了PHP。我重新安装了相同版本的PHP,详情如下。我重新运行了测试代码并获得了相同的结果
然后我重新安装了PHP和Apache 2.2。在执行此操作之后,上面的测试用例按预期工作,但随后又出现了另一个错误,我将其缩减为以下测试用例。
测试文件:
<?php
$var = 390;
echo "var: " ; var_dump($var );
echo "is_float(): " ; var_dump(is_float($var) );
echo "is_string(): "; var_dump(is_string($var));
echo "echo: $var<br/>\n";
$var = 390.0;
echo "var: " ; var_dump($var );
echo "is_float(): " ; var_dump(is_float($var) );
echo "is_string(): "; var_dump(is_string($var));
echo "echo: $var<br/>\n";
?>
输出:
var: int(390) is_float(): bool(false) is_string(): bool(false) echo: 390
var: float(38:) is_float(): bool(true) is_string(): bool(false) echo: 38:
任何人都可以解释这种奇怪的行为吗?
更新
我通过运行硬件诊断发现服务器上的CPU过热。当问题得到解决以便硬件诊断通过时,错误就会停止显示在日志中(请参阅下面接受的答案)。
对于调查类似问题的其他人,我发现在下面的URL中讨论了另一个涉及浮点数和冒号后缀的奇怪PHP错误。不确定是否相关。 https://bugs.php.net/bug.php?id=51396
PHP版本信息:
答案 0 :(得分:0)
CPU出现故障。
我从这里下载了一个Intel CPU诊断工具:
https://downloadcenter.intel.com/download/19792/Intel-Processor-Diagnostic-Tool
相关产出:
Current Junction Temperature is 99C
Current Degrees Below Max 1C
Maximum Junction Temp Allowed 100C
Test Result - FAIL
Please check your Processor Thermal Solution