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

わんくま同盟

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

C# と VB.NET の入門サイト


(過去ログ 63 を表示中)
■36140 / )  VB2008,四捨五入の方法について
□投稿者/ hito (5回)-(2009/05/21(Thu) 19:30:25)

分類:[VB.NET/VB2005 以降] 

2009/05/21(Thu) 19:32:31 編集(投稿者)
お世話になります。hitoと申します。

現在、VB2008にてフォームの開発をしているのですが、
フォーム上にはDataGridViewを設置しています。
そして、そのDataGridViewには、数値のみを格納した列があります。

まず、その列のすべてのCellの値の合計値をします。
こちらがそのコードです。

	'列の合計を求める。
        Dim a As String = 0
        Dim s As Integer
        s = 0
        Dim i As DataGridViewRow
        For Each i In DataGridView_Sub.Rows
            If Not i.IsNewRow Then
                a = DataGridView_Sub(1, i.Index).Value
                If a <> "" Then
                    s = s + a
                End If
            End If
        Next i

一応上記のコードで合計値を求めることができます。
次にDataGridViewの1つのCellの値(数値型)を、上記のコードで求めた合計値で割り算をしたいと考えております。
こちらがそのソースになります。
         Dim Y As Integer
         Y = DataGridView_Sub.CurrentCellAddress.Y
         Dim b As Integer = 0
         Dim c As Integer = 0
         Dim DGV As Integer = 0
         DGV = DataGridView1(1, Y).Value
        b = (DGV / s)
         Round2(b)   '<---四捨五入を行う
         c = b * 80

仮に、s の値が「14」だとします。
そうしますと、b = (4 / s)の部分で、bの値が0.2857........となります。
やりたい作業は、b の値を算出した直後にbを四捨五入するという仕様を作りたいということなのですが、
四捨五入をする際の計算方法がよく分からないんです・・・。
一応サイトを見て回り、
このようなサンプルコードを発見いたしました。
   Function Round2(ByVal A As Double)    '四捨五入関数
        If A = 0 Then
            Round2 = 0
        ElseIf A > 0 Then
            Round2 = Int(A + 0.5)
        Else
            Round2 = -Int(-A + 0.5)
        End If
    End Function

こちらのソースで四捨五入が出来るかと思ったのですが、このファンクションを通ったあと、
どのようにして、元のイベントに戻り値を返したらよいかが分からないんです。
恐縮ですが、Functionを通過した後の、戻り値の取得方法を教えてはいただけないでしょうか。
よろしくお願いします。

返信 編集キー/


管理者用

- Child Tree -