带小数点的 Perl 怪异行为
Perl weird behaviour in number with decimal point
所以我写了一个 perl 程序来做一些计算
我把一个浮点数作为
$x = 00.05;
如果我打印
print $x * 100.0;
它returns 500.0
但如果我这样做
$x = 0.05;
print $x * 100.0;
它正确打印 5.0;
这是什么行为?
有没有我必须遵守的约定,我失踪了?
前导零表示八进制常量,所以当您这样做时
my $x = 00.05;
你实际上是在做两个八进制数的字符串连接:
my $x = 00 . 05; # The same as "0" . "5"
这给你字符串 "05"
然后你做
print $x * 100.0; # prints 500
因为 perl
解释为 "05"
作为数字 5
所以我写了一个 perl 程序来做一些计算 我把一个浮点数作为
$x = 00.05;
如果我打印
print $x * 100.0;
它returns 500.0
但如果我这样做
$x = 0.05;
print $x * 100.0;
它正确打印 5.0;
这是什么行为? 有没有我必须遵守的约定,我失踪了?
前导零表示八进制常量,所以当您这样做时
my $x = 00.05;
你实际上是在做两个八进制数的字符串连接:
my $x = 00 . 05; # The same as "0" . "5"
这给你字符串 "05"
然后你做
print $x * 100.0; # prints 500
因为 perl
解释为 "05"
作为数字 5