Perl中浮点等价的单元测试

Jam*_*son 4 testing floating-point perl unit-testing

我正在使用Test :: More在Perl中编写单元测试.我已经习惯了cxxunit的一些构造,特别是我缺少TS_ASSERT_DELTA.对于那些没有看过TS_ASSERT_DELTA的人,它看起来像这样:

TS_ASSERT_DELTA( 1.0, 1.1, 0.5 );   // this test will pass
TS_ASSERT_DELTA( 1.0, 1.1, 1e-10 ); // this test will fail
Run Code Online (Sandbox Code Playgroud)

是否有Perl等效的浮点比较?或者每个人都为此写了一个明显的功能?我正在使用这个:

sub compare_float_delta {
    my $n1    = shift;
    my $n2    = shift;
    my $delta = shift;
    return( abs($n1-$n2) < $delta );
}
Run Code Online (Sandbox Code Playgroud)

对我来说,这似乎是测试框架应该提供的东西.这个想法是正确的,还是我应该调用float_compare_delta继续我的生活?

Mig*_*Prz 7

您可以使用CPAN中的特定模块:Test :: Number :: Delta