2016-11-19 6 views
0

私は数字のリストを含むテキストファイルを持っています。最初の行は5.5、2行目は8行目、3行目は13行目などとなります。各テキストファイルには、異なる数のリストを毎回生成しますが、私はこのケースでは、ここで、5.5である最初の行に集中してる私のコードは数字を含むテキストファイルの最初の行のみを読み、それに数学を行うにはどうすればよいですか?

   StreamReader FileFav = new StreamReader(BettingFileFav); 
       StreamReader FileOdds = new StreamReader(BettingFileOdds); 
       StreamReader FileResult = new StreamReader(BettingFileResult); 
       FavLine = FileFav.ReadLine(); 
       OddsLine = FileOdds.ReadLine(); 
       ResultLine = FileResult.ReadLine(); 
       int BetAmount = 10; 

       if (FavLine.Contains("Yes")) 
       { 
        int a = Convert.ToInt16(OddsLine); 
        double c = ((double)a * BetAmount); 
        string myString = c.ToString("#.##"); 
        MessageBox.Show("Won £" + myString); 
       } 
       else 
       { 
        MessageBox.Show("Lost -£" + BetAmount); 
       } 

であることが読み取ったテキストの行は5.5ので、私を読み込み答え55.50を得ようとしています。 エラーコード

追加情報:入力文字列の形式が正しくありません。

私はMessageBox.Showを使用して動作しているかどうかを確認し、後で使用するファイルに結果を移行します。

誰でも手伝いできますか?

+1

なるべきなぜあなたは 'int'に変換してから' double'にキャストしようとしていますか?すぐに「ダブル」に変換してみませんか? – UnholySheep

+0

また、(明らかに)デバッガの下で実行したときに 'OddsLine'の値は何ですか? –

+1

5.5(浮動小数点値)をInt16に解析しようとしています: 'int a = Convert.ToInt16(OddsLine);'。なぜあなたはそれがうまくいくと思いますか?そして、その正確なコード行にエラーが発生したとき、なぜそれを見つけられなかったでしょうか? –

答えて

0

コメントに指摘されているように、浮動小数点数を整数に変換しようとしていますが、それはConvert.ToInt16で受け入れられません。この関数は、documentationに記述されているように、16ビット以内に収まる実際の符号付き整数値を表す文字列を必要とします。

しかし、次の計算に基づいて、文字列をdoubleに直接変換するので、代わりにConvert.ToDoubleを使用してください。

ので

int a = Convert.ToInt16(OddsLine); 
double c = ((double)a * BetAmount); 

ラインが

double a = Convert.ToDouble(OddsLine); 
double c = (a * BetAmount); 
+0

あなたの答えをありがとう、私はまだ学んでいて、いくつかばかげた過ちをしているように見える、それは今意味があり、働いた –

関連する問題