浮点测试断言 - 为什么这些"相同"的数组失败?

mtm*_*ald 5 php phpunit

我在PHPUnit中使用assertSame()来比较数据库结果和期望值.结果是浮点数.

PHPUnit返回此消息(但我无法发现任何差异):

Failed asserting that Array (
    '1_1' => 11.111111111111
    '1_2' => 33.333333333333
    '1_3' => 55.555555555556
    '1_4' => 0.0
    '1_5' => null
    '1_total' => 100.0
) is identical to Array (
    '1_1' => 11.111111111111
    '1_2' => 33.333333333333
    '1_3' => 55.555555555556
    '1_4' => 0.0
    '1_5' => null
    '1_total' => 100.0
)
Run Code Online (Sandbox Code Playgroud)

为什么这会失败以及比较浮点值数组的正确方法是什么?

gon*_*lez 13

对于这种类型的情况,assertEquals有一个$ floating_delta参数:

$this->assertEquals($expected_array, $actual_array, '', 0.00001);
Run Code Online (Sandbox Code Playgroud)

PHPUnit文档