您好我有一个矩阵,其中包含浮点数和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,即使它是一个整数。 怎么解决?
答案 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;
总是在所有脚本中。