C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.12183 の関連記事表示

<< 0 >>
■12183  For nextについて
□投稿者/ ドラゴン -(2008/01/03(Thu) 14:24:40)

    分類:[VB.NET/VB2005] 

    三度目の質問ですが、
    今回はFor...Nextを使って 銀行預金額を計算するというプログラム作成にあたっていたのですが
    2週間ほど、手詰まりをしております

    Dim StartAge1 As Single '銀行預金を始めた年齢
    Dim StopAge1 As Single '銀行預金を終えた年齢
    Dim AnDepo1 As Single '毎年の預金額
    Dim IntRate1 As Double '銀行利子
    Dim Age As Single '年
    Dim IRA As Single '利子のパーセンテージ
    Dim Profit As Single '利子増加額

    StartAge1 = Val(StartAge.Text) '銀行預金開始時の年齢
    StopAge1 = Val(StopAge.Text) '銀行預金を終えた年齢
    AnDepo1 = Val(AnDepo.Text) '毎年の預金額
    IntRate1 = Val(IntRate.Text) / 100 '利子を100で割ってパーセンテージ化に




    For StartAge1 = StartAge.Text To StopAge.Text '銀行預金開始した年から終える年まで計算(開始時を1とする)

    Age = StartAge1 + (StopAge1 - StartAge1) '銀行預金開始してから終了するまでの年数を計算
    AnDepo1 = AnDepo1 * Age '毎年の預金額×
    IRA = AnDepo1 + Profit '合計預金額+利子
    Profit = (AnDepo1 * IntRate1) '銀行の預金額を利子分割って、利子による増加額を計算


    Result.Text = Result.Text & Age & vbTab & AnDepo1 & vbTab & IRA & vbTab & vbTab & Profit & vbNewLine '結果として、X歳時の合計預金額、合計預金+利子、合計利子を表示する

    Next

    End Sub

    問題点1: Ageの数値が全て同じ()
    問題点2: 利子が小数点2個以内に納まらない
親記事 /過去ログ26より / 関連記事表示
削除チェック/

■12184  Re[1]: For nextについて
□投稿者/ επιστημη -(2008/01/03(Thu) 14:48:31)
>
    > 問題点1:   Ageの数値が全て同じ()
    
         Age = StartAge1 + (StopAge1 - StartAge1) '銀行預金開始してから終了するまでの年数を計
             = StartAge1 + StopAge1 - StartAge1
             = StopAge1
    
      ... そりゃそーだ。
    
    > 問題点2:   利子が小数点2個以内に納まらない
    
     小数点2個以内に納める処理はどこですか? どこにも見当たりませんけど。
    
    
記事No.12183 のレス /過去ログ26より / 関連記事表示
削除チェック/

■12185  Re[1]: For nextについて
□投稿者/ 通りすがり -(2008/01/03(Thu) 16:49:05)
    型とかまったく意識できてないし。
    掲示板で聞く前の段階だと思う。
記事No.12183 のレス /過去ログ26より / 関連記事表示
削除チェック/

■12191  Re[1]: For nextについて
□投稿者/ Jitta -(2008/01/03(Thu) 21:46:02)
>
    No12183 (ドラゴン さん) に返信
    > 三度目の質問ですが、
    > 今回はFor...Nextを使って 銀行預金額を計算するというプログラム作成にあたっていたのですが
    > 2週間ほど、手詰まりをしております
    >
    > Dim StartAge1 As Single '銀行預金を始めた年齢
    > Dim StopAge1 As Single '銀行預金を終えた年齢
    > Dim AnDepo1 As Single '毎年の預金額
    > Dim IntRate1 As Double '銀行利子
    > Dim Age As Single '年
    > Dim IRA As Single '利子のパーセンテージ
    > Dim Profit As Single '利子増加額

     Single って。。。いや、まぁ、いいんだけど。。。


    > StartAge1 = Val(StartAge.Text) '銀行預金開始時の年齢
    > StopAge1 = Val(StopAge.Text) '銀行預金を終えた年齢
    > AnDepo1 = Val(AnDepo.Text) '毎年の預金額

     TextBox.Text は「文字」です。Single は「数値」です。数値と文字は違うものです。
    どっちかというと、Single.TryParse を使ってほしい。。。


    > IntRate1 = Val(IntRate.Text) / 100 '利子を100で割ってパーセンテージ化に

     ん。。。まぁ、あれです。デバッガで、IntRate1 がいくらになっているか、確認してください。
    おそらく、IntRate には、3% なら "3" という数値を入れていると思います。
    すると、これは「整数」に変換されます。
    割る数である 100 も整数です。ここは、「整数÷整数」の計算が行われ、結果が「整数」で取り出されます。
    その後、IntRate1 の型である Double に変換されます。結果、0.0 になっていると思います。



    >
    > For StartAge1 = StartAge.Text To StopAge.Text '銀行預金開始した年から終える年まで計算(開始時を1とする)

     文字を、ある文字から他の文字まで、変化させることはできません。
    (まぁ、VB は、勝手に変換してくれたりしちゃうんだ)



    > Age = StartAge1 + (StopAge1 - StartAge1) '銀行預金開始してから終了するまでの年数を計算

     (StopAge1 - StartAge1) が負数だったら、どうします?
    で、「銀行預金を始めた年齢+(銀行預金を終えた年齢−銀行預金を始めた年齢)」は、「銀行預金を終えた年齢」と同じになっていると思うのですが、どうでしょう?



    > AnDepo1 = AnDepo1 * Age '毎年の預金額×
    > IRA = AnDepo1 + Profit '合計預金額+利子
    > Profit = (AnDepo1 * IntRate1) '銀行の預金額を利子分割って、利子による増加額を計算

     んっと。。。ここって、こんな計算でいいんです?
    あ、Age の計算が間違っているんだった。



    >
    >
    > Result.Text = Result.Text & Age & vbTab & AnDepo1 & vbTab & IRA & vbTab & vbTab & Profit & vbNewLine '結果として、X歳時の合計預金額、合計預金+利子、合計利子を表示する

     ん。。。String.Format 使ってください。



    >
    > Next
    >
    > End Sub
    >
    > 問題点1: Ageの数値が全て同じ()
    > 問題点2: 利子が小数点2個以内に納まらない
    >
記事No.12183 のレス /過去ログ26より / 関連記事表示
削除チェック/

■12201  Re[2]: For nextについて
□投稿者/ 未記入 -(2008/01/04(Fri) 20:48:21)
    理屈で理解できない状況だと思われるので Option Strict On にして潰すところから始めることをお勧めします。
記事No.12183 のレス /過去ログ26より / 関連記事表示
削除チェック/

■12249  Re[2]: For nextについて
□投稿者/ よねKEN -(2008/01/06(Sun) 04:52:51)
    部分的にツッコミ。

    No12191 (Jitta さん) に返信
    >> IntRate1 = Val(IntRate.Text) / 100 '利子を100で割ってパーセンテージ化に
    >
    >  ん。。。まぁ、あれです。デバッガで、IntRate1 がいくらになっているか、確認してください。
    > おそらく、IntRate には、3% なら "3" という数値を入れていると思います。
    > すると、これは「整数」に変換されます。

    Val関数は基本的にDouble型を返す関数ですので、整数には変換されていないのではないでしょうか。
    #Option Strict Offで、入力が1桁の数字の場合、
    #Val(IntRate.Text)がひょっとしたら整数を返すかもしれませんが、その辺は未検証です。

    > 割る数である 100 も整数です。ここは、「整数÷整数」の計算が行われ、結果が「整数」で取り出されます。
    > その後、IntRate1 の型である Double に変換されます。結果、0.0 になっていると思います。

    VBの / 演算子は小数同士の演算ですので、整数 / 整数はDouble / Doubleとして処理されます。
記事No.12183 のレス /過去ログ26より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -