Mar*_*iya 0 arrays int perl matrix 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";
}
Run Code Online (Sandbox Code Playgroud)
问题是这个代码输出将所有内容都写为float,即使它是一个整数.怎么解决?
这是我的评论 - >答案:
我猜$matrix[$i][$j]是因为$matrix[$i][$j]{score}在print语句中使用了对哈希的引用.所以它永远不是一个整体.
我做(有一些修复):
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";
}
Run Code Online (Sandbox Code Playgroud)
别忘了:
use strict;
use warnings;
Run Code Online (Sandbox Code Playgroud)
始终在所有脚本中.