2011-08-08 55 views
2

在perl中使用標量值時,我無法實現所需的結果。需要你在盤算幫助我要去的地方錯了..Perl浮點數使用混淆

說我要循環9次,並打印0.1至0.9

我聲明的變量$i,並用它來循環以及在循環中。

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被視爲0e結合使用?

+0

除非必須使用perl,否則不應該在perl中使用C風格的循環。嘗試'爲我$(1..9){'代替。此外,你應該標記霍華德的答案是正確的答案。 – gpojd

回答

12

我覺得你只是忘了,包括乘法運算*

$i * 1e-01 

字符串$ie-01將被解釋爲$ie - 01這是一個unititialized變量(即零)減去一個,這將給你-1。 (您可以使用e -notation只有不斷進行編號,但不變量。)

+0

絕對正確..我試着乘法運算符,它的工作原理!謝謝你,霍華德。 – jb04

+0

雖然還有一個問題!爲什麼我在包含()時發生錯誤...像$ i(e-01) 因爲我知道我在那裏做錯了什麼,但我試圖帶上大括號來表示它的不同,但我收到了錯誤此行 – jb04

+0

@Jey Bela乘法運算符'*'在Perl中不是可選的。你還必須寫'$ i *(1e-01)'。正如我在回答中所提到的,「e-01」只適用於不變的前綴。 – Howard

6

你的第一個錯誤是不包括:

use strict; 
use warnings; 

這會告訴你變量$ie沒有被宣佈。

沒有合理的方法使${i}e-01工作;你將不得不eval它,這是不合理的。標準的寫法是:

$b = $i * 0.1;