0

您好,我有一个包含浮点数和整数的矩阵,如果它不是整数,我想以某种方式将其打印到文件中打印浮点数后舍入为 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";
}

问题是此代码输出将所有内容都写为浮点数,即使它是整数。如何解决?

4

1 回答 1

7

这是我的评论->答案:

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

我会做(有一些修复):

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;

在你所有的脚本中,总是。

于 2013-09-11T13:01:38.250 回答