2011-08-08 5 views
2

perlでスカラー値を使用しているが、私は希望する結果を達成できません。私が間違っているつもりどこ..考え出すであなたの助けを必要とする Perl浮動小数点数の混乱

は0.1

0.9に私は$i変数とループのためだけでなく、ループの内側にそれを使用して宣言私はループに9回を希望して印刷すると言います。

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"; 
} 

希望の結果を得るにはさまざまな方法がありますが、希望の出力を得るために指数関数を使用する方法を知りたいと思います。 。 。 。 。

なぜ$ieと組み合わせて使用​​すると0と扱われますか?私はあなただけ乗算演算子*含めるのを忘れて考える

+0

あなたがそれらを使用する必要がない限り、あなたはperlのループにCスタイルを使うべきではありません。代わりに '$ i(1..9){'を試してみてください。また、正しい答えとしてハワードの答えを記入してください。 – gpojd

答えて

12

:文字列$ie-01

$i * 1e-01 

はあなたに-1を与えるunititialized変数(すなわちゼロ)から1を引いたものである$ie - 01として解釈されます。 (あなただけの一定の数字ではなく変数をe -notationを使用することができます。)

+0

私は乗算演算子で試してみました。ありがとうございました。 – jb04

+0

もう一つ質問!なぜ私は$ i(e-01)のようなものを含めるとエラーになるのですか? 私はそこに何か間違ったことをしていることを知っていましたが、違うものを示すために中かっこを入れようとしましたが、この行 – jb04

+0

@Jey Bela乗算演算子 '*'はperlではオプションではありません。 '$ i *(1e-01)'と書く必要もあります。私の答え 'e-01'で述べたように、定数プレフィックスでのみ動作します。 – Howard

6

あなたの最初の間違いを含めていませんでした:これはないと宣言された変数$ieについてあなたに言っただろう

use strict; 
use warnings; 

${i}e-01を動作させる合理的な方法はありません。それはevalでなければなりません。これは妥当ではありません。

$b = $i * 0.1; 
関連する問題