perl检查数字是否不是int不工作

时间:2013-09-11 12:42:13

标签: arrays perl matrix int floating

您好我有一个矩阵,其中包含浮点数和int数字我想以某种方式将其打印到文件中,如果它不是整数打印,则浮点数后舍入为1的数值。以下是我的代码

use Scalar::Util::Numeric qw(isint);

    for ( $i = 0 ; $i < $#matrix ; $i++ ) {
    for ( $j = 0 ; $j < $#{ $matrix[0] } ; $j++ ) {
        if (not isint $matrix[$i][$j] ) {

            printf MYFILE ("%.1f",$matrix[$i][$j]{score});
        }
        else {
            print MYFILE $matrix[$i][$j]{score}.' ';
        }
    }
    print MYFILE "\n";
}

问题是这个代码输出将所有内容都写为float,即使它是一个整数。 怎么解决?

1 个答案:

答案 0 :(得分:7)

这是我的评论 - &gt;回答:

我猜$matrix[$i][$j]是对哈希的引用,因为print语句中使用了$matrix[$i][$j]{score}。所以它永远不是一个整体。

我会(有一些修复):

for ( my $i = 0 ; $i < $#matrix ; $i++ ) {
#   __^^
    for ( my $j = 0 ; $j < $#{ $matrix[$i] } ; $j++ ) {
    #                                __^^
        if (not isint $matrix[$i][$j]{score} ) {
        #                          __^^^^^^^
            printf MYFILE ("%.1f",$matrix[$i][$j]{score});
        }
        else {
            print MYFILE $matrix[$i][$j]{score}.' ';
        }
    }
    print MYFILE "\n";
}

不要忘记:

use strict;
use warnings;
总是在所有脚本中