perl-strange测试行为

时间:2016-06-02 11:39:05

标签: perl testing

摘自我的代码:

for $SS ( 0 .. scalar @TAB_SS - 1 ) {

    print Dumper ( "av", $CUMUL, $PCTVOLTMP, $TAB_SS[$SS][1] );

    $CUMUL = $CUMUL + $TAB_SS[$SS][1];
    print Dumper ( "ap", $CUMUL, $PCTVOLTMP );

    if ( $CUMUL >= $PCTVOLTMP ) {

        Calcul_Date( $TAB_SS[$SS][0] );
        $DATE  = "$Auj_j/$Auj_m/$Auj_4a";
        $HEURE = "$H:$MI:$S";

        printf(
            "%3d%-25s%8s%3s%8s\n",
            $PCTTMP, " % en volume atteints le ",
            $DATE, " à ", $HEURE );

        $PCTVOLTMP = $PCTVOLTMP + $PCTVOL;
        print Dumper ( "Prochaine étape ", $PCTVOLTMP );

        $PCTTMP = $PCTTMP + $PCT;
    }
}

printf( "Volume total sauvé : %6.2f GB\n", $TAILLC / 1000000000 );

由于我无法找到的原因,有时(可重复地)程序没有按预期进入测试打印数据,尽管测试的值相等。

放一些印刷品寻找奇怪的东西,但没办法...

以下是工作时显示的内容(此处仅显示最后一行):

$VAR1 = 'av';
$VAR2 = '4722181648752';
$VAR3 = '4770868299648';
$VAR4 = 92984872;
$VAR1 = 'ap';
$VAR2 = '4722274633624';
$VAR3 = '4770868299648';
$VAR1 = 'av';
$VAR2 = '4722274633624';
$VAR3 = '4770868299648';
$VAR4 = '46893768708';
$VAR1 = 'ap';
$VAR2 = '4769168402332';
$VAR3 = '4770868299648';
$VAR1 = 'av';
$VAR2 = '4769168402332';
$VAR3 = '4770868299648';
$VAR4 = 1699897316;
$VAR1 = 'ap';
$VAR2 = '4770868299648';
$VAR3 = '4770868299648';
100 % en volume atteints le 24/05/2016 à 07:15:40
$VAR1 = 'Prochaine étape ';
$VAR2 = '5247955129612.8';
Volume total sauvé : 4770.87 GB

当不工作时:

$VAR1 = 'av';
$VAR2 = '4325103606080';
$VAR3 = '4337435336392';
$VAR4 = 1119865540;
$VAR1 = 'ap';
$VAR2 = '4326223471620';
$VAR3 = '4337435336392';
$VAR1 = 'av';
$VAR2 = '4326223471620';
$VAR3 = '4337435336392';
$VAR4 = '11122370688';
$VAR1 = 'ap';
$VAR2 = '4337345842308';
$VAR3 = '4337435336392';
$VAR1 = 'av';
$VAR2 = '4337345842308';
$VAR3 = '4337435336392';
$VAR4 = 89494084;
$VAR1 = 'ap';
$VAR2 = '4337435336392';
$VAR3 = '4337435336392';
Volume total sauvé : 4337.44 GB

任何帮助/线索都将非常感激......

1 个答案:

答案 0 :(得分:0)

终于解决了! 随着:

use bignum

允许我使用大整数值。 但作为“附带效应”,将所有值转换为float(?),从而在操作

使用的对象时产生错误结果
Date::Calc

所以,使用了

use POSIX

将这些数据细化。