2016-08-10 15 views
0

数字の文字列をコンマでフォーマットする方法は既にわかっていますが、this threadから必要なものを受け取りました。Format()数値の文字列をコンマで区切ってループ内の文字列に変換します

しかし、私が見るところでは、それは所定の文字列変数を扱います。私の場合は、forループを実行しています。これはdouble値をstringに変換し、出力をテーブル行として表示します。物事をシンプルに保つために

for (double i = 1; i <= years; i++) 
{ 
           //number of years   //future value 
    richTextBoxResults.Text += i.ToString().PadLeft(3) + (presentValue * Math.Pow(((interestRate/100/periods) + 1), (periods * i))).ToString("$#.00").PadLeft(28) + "\n"; 
} 

、3つの出力行は、私は.ToString(後にループ内でフォーマット()を使用してみました

Years        Future Value 
__________________________________________________ 
    1         $1234567.89 
    2         $2345678.90 
    3         $3456789.01 

アイデアを得るために十分であるべきである "$#。00" )メソッドでは、Method() cannot be accessed _ with an instance referenceのエラーが発生しました。しかし、私はそれらの答えを私の場合にどのように適用できるかはわかりません。

一時的に値を格納してフォーマットする文字列変数を作成することを考えていました。しかし、より洗練されたソリューションがあるかどうかは疑問です。

私の出力は、次の

Years        Future Value 
__________________________________________________ 
    1         $1,234,567.89 
    2         $2,345,678.90 
    3         $3,456,789.01 

または私はそれに私のアプローチを変更する必要があるのようなものですので、私はまだ、フォーマット(多分違う角度下)()メソッドを適用することはできますか?

答えて

3

あなたのコードは読みにくく、問題を理解するのが難しくなっています。あなたは.ToStringの前に余分な)を持っている:

Math.Pow(((interestRate/100/periods) + 1), (periods * i)).ToString("$#.00").PadLeft(28) 

あなたは千単位の区切りを適用するために"$0,#.00"を使用することができます。

+0

ええ、私は自分の行を読みやすくしようとしましたが、新しい行に切り替えると混乱してしまいました。私もあなたのボトムソリューションを適用し、それは働いた!私は限界がなくなるとすぐに受け入れます。 –

+0

@VadzimSavenokあなたは今から2ヶ月後に投稿したこのコード行を読んでおきます。それを理解するにはもっと時間がかかります。私は非常にあなたが複数の行に計算を分割することをお勧めします。可読性、可読性、可読性。あなたのコードを読んでいる人だけでなく、必要に応じて後の段階でそれを維持したり変更したりすることができます。 – user3185569

+0

私は確かにそれを適用する、それはちょうど私が言葉をラップしていたので、それは私にはかなり読めるようになった。しかし、私はあなたが何を意味するかを見ます。 –

0

あなたはstringクラスの静的メソッドとしてFormat()を呼び出す必要があります:変数内のデータを入れて、あなたのコードが読みやすくするために

string.Format(/*YourParameters*/) 
1

。このようにフォーマットしてください。

var _value = presentValue * Math.Pow(((interestRate/100/periods) + 1), (periods * i)); 
richTextBoxResults.Text+= i.ToString().PadLeft(3) + String.Format("{0:0.00}",_value) .PadLeft(28) ; 
+0

私の提案にあなたの提案を適用します。ユーザーが最初に私の質問に答えたが、あなたはまだupvoteに値する=) –

+0

ありがとう@VadzimSavenok –

関連する問題