Perl浮点数用法混乱
在perl中使用标量值时,我无法实现期望的结果。我需要你的帮助来找出我的错误所在 假设我要循环9次并打印0.1到0.9 我声明了变量Perl浮点数用法混乱,perl,Perl,在perl中使用标量值时,我无法实现期望的结果。我需要你的帮助来找出我的错误所在 假设我要循环9次并打印0.1到0.9 我声明了变量$I,并在for循环和循环内部使用它 for($i = 1; $i < 10; $i++) { $b = $ie-01; # (This where I go wrong, I am not sure If I am following correct # syntax here, Because I see -1
$I
,并在for循环和循环内部使用它
for($i = 1; $i < 10; $i++)
{
$b = $ie-01; # (This where I go wrong, I am not sure If I am following correct
# syntax here, Because I see -1 getting printed instead of $i value
# which is incremented on each loop)
print "The value now is: $b\n";
}
($i=1;$i<10;$i++)的
{
$b=$ie-01;#(这是我出错的地方,我不确定我的跟踪是否正确
#这里的语法,因为我看到打印的是-1而不是$I值
#在每个循环中递增)
打印“当前值为:$b\n”;
}
我知道获得期望结果的不同方法,但我想知道如何使用指数来获得期望的输出
当与
e
一起使用时,$i
为什么被视为0
?我想您只是忘记了包含乘法运算符*
:
$i * 1e-01
字符串
$ie-01
将被解释为$ie-01
,它是一个单位化变量(即零)减去一,将为您提供-1
。(您只能将e
-符号用于常量,而不能用于变量。)您的第一个错误不包括:
use strict;
use warnings;
这会告诉您没有声明变量$ie
没有合理的方法使${i}e-01
工作;你必须eval
it,这是不合理的。书写它的标准方式是:
$b = $i * 0.1;
绝对正确。。我尝试了乘法运算符,它很有效!!!谢谢你,霍华德,还有一个问题!!为什么我在包含一个()…比如$I(e-01)时会出错,因为我知道我在那里做错了什么,但我试图引入大括号来表示它的不同,但我在这方面收到了错误line@JeyBela乘法运算符
*
在perl中不是可选的。您还必须编写$i*(1e-01)
。正如我在回答e-01
中所提到的,它只适用于固定前缀。如果您添加了两行则使用strict代码>使用警告在脚本的顶部,Perl会警告您,$ie
未初始化。除非必须使用C样式,否则不应在Perl中对循环使用C样式。试着用替换我的$i(1..9){
。另外,你应该把霍华德的答案标记为正确答案。