带小数点的 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