带小数点的数字中的 Perl 奇怪行为

标签 perl floating-point decimal

所以我正在写一个 perl 程序来做一些计算和
我已经把一个浮点数作为
$x = 00.05;
如果我打印
print $x * 100.0;
它返回 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 奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62099696/

相关文章:

c++ - 在Visual Studio中将64位 double 转换为字节数组形式的80位 double

c++ - Base 2 到 Base 10 转换器不能处理非常大的数字?

php - 我可以使用 $string number_format 行为小数点上标吗?

c# - 如何一次获取所有文件属性,包括作者、标题、mp3 标签等

perl - Perl 如何解析未引用的裸词?

python - 流程图到脚本转换器

c++ - 为什么使用 double 然后转换为 float?

floating-point - 在 Golang 中将未知接口(interface)转换为 float64

python - Decimal.quantize 舍入误差

perl - 这在 perl $variable_one{$variable_two} 中是什么意思,它叫什么?