• ベストアンサー

このコードであってますでしょうか?

重量を格納する変数(Weight)を宣言する。重量テキストボックスの入力値はMath.Ceilingメソッドで小数点以下を切り上げて整数値とし、これをWeightに代入して初期化する。 この文章をプログラムになおすと Dim Weight As Integer = Math.Ceiling(CDbl(Weight As Integer)) これでいいのでしょうか??

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

'できるだけC#互換の記述を目指した。 Class Form1 Inherits System.Windows.Forms.Form Private Button1 As New System.Windows.Forms.Button Private TextBox1 As New System.Windows.Forms.TextBox Sub New() InitializeComponents() End Sub Sub InitializeComponents() SuspendLayout() With Button1 .Name = "Button1" .Text = "数値" .Location = New System.Drawing.Point(12, 12 + 25 * 1) End With With TextBox1 .Name = "TextBox1" .Location = New System.Drawing.Point(12, 12 + 25 * 2) End With 'C#ではButton1.Click += new System.EventHandler(this.Button1_Click) AddHandler Button1.Click, AddressOf Button1_Click Me.Controls.Add(Button1) Me.Controls.Add(TextBox1) Me.ResumeLayout(False) End Sub Private Sub Button1_Click() Try 'クラスのメンバ変数で最初書いていたが,よく考えたら条件が「初期化」しろ、なんだよね・・・ Dim Weight As Integer = Integer.Parse(Math.Ceiling(Double.Parse(TextBox1.Text)).ToString) System.Console.WriteLine(Weight.ToString) Catch ex As FormatException System.Diagnostics.Debug.Print(ex.ToString) End Try End Sub End Class

noman777
質問者

お礼

解決しました!有難うございます^-^

関連するQ&A

  • VBAの変数変換のことです

    VBAの変数変換のことです 整数変数=実数変数や実数変数=整数変数でCIntやCSng関数を使わないでOKでしょうか? Dim VAR(20) As Single '単精度浮動小数点数型 (Single) Dim IVARO(20) As Integer '整数型 (Integer) Dim IVAROC(20) As Integer '整数型 (Integer) IVARO(NCD) = VAR(NCD) 'Single to Integer IVAROC(NCD) = CInt(VAR(NCD)) 'Single to Integer これで、IVARO(NCD)とIVAROC(NCD)には同じ値が入っているのですが、 整数=実数でCInt関数を使わないで整数にする構文はOKでしょうか?

  • VBでの変数宣言は1行に2つできないのですか?

    Visual BASICで変数宣言は1行に2つ以上記述しても実際、動作します。 例 DIM A、B as Integer このように宣言すると、AもBも整数となります。 しかし、このように宣言して、この変数を Call サブプログラム名(B) のように、パラメ-タとして引き渡そうとするとエラーとなってしまうようです。 よくわからないまま、 DIM A as Integer DIM B as Integer と分けて記述したらエラーがきえたようです。 変数宣言は1行に2つ以上まとめて記述してはいけないのでしょうか? VBは Ver 5 です。

  • 小数点の引き算が不正確

    みなさまこんばんわです。よろしくお願い申し上げます。 VB.NET 2008でFunctionプロシージャを作っています。 その内容は、Double型の値を与えると、その小数点第一位のみをInteger型で返すというものです。 たとえば、3.142を与えると、1を返します。38.98を与えると、9を返します。 これを次のようにコーディングしました。コメントは、39.9を与えたときの動作です。答えは、9を期待しますよね。 ------------------------------------- Function SyosutenWoKaesu(ByVal NyuuryokuSuuchi As Double) As Integer Dim SyosutenBubun As Double Dim SeisuuBu As Integer SeisuuBu = Fix(NyuuryokuSuuchi) 'Fix関数は、入力数値の整数部を返すので、39をInteger型で返します SyosutenBubun = NyuuryokuSuuchi - CDbl(SeisuuBu) 'データ型をDouble型に変換し、引き算。39.9-39なので、0.9という答えを期待しますが、実際は、0.899999999999999が返ってきます SyosutenBubun = SyosutenBubun * 10 SyosutenWoKaesu = Fix(SyosutenBubun) '10倍した数の整数部なので、8を返します。困ります。 End Function ------------------------------------- なんで 39.9 - 39 が0.9じゃないんでしょうか? しかも、10.9など、少ない数字だと、きちんと演算されます。また、100.9などだと、途中、0.900000000000006などの数値になるんですけど、答えはきちんと9を出力します。 また、小数点第一位が9以外だと、うまくいくんです。 ちなみに、CDbl関数を使わなくても同じでした。また、-演算子の代わりに、Mod演算子(割り算の余りを返す演算子)を使っても全く同じでした。 なんでこんな不正確な演算結果になるんでしょうか? あるいは、別のもっとスマートな方法がありますでしょうか? よろしくお願い申し上げます。

  • 変数を動的に作るには?

    変数を作成する際には必要な分だけ一つずつ宣言する必要があるのでしょうか? 例えば、連番を格納する文字列型変数を一時的に100個必要だとすると Dim textdat1 As String = "Number1" Dim textdat2 as String = "Number2" Dim textdat3 as String = "Number3"      ・      ・      ・ と100個宣言しないといけないと思うのですがこれを For i As Integer = 1 To 100 Dim textdat(i) As String = "Number" & i Next i という様な形で変数を作成することは出来ないのでしょうか。 初歩的な質問かもしれませんが、よろしくお願いします。

  • 初歩的な質問ですいません

    Dim i As Integer この場合、iを整数の変数として定義する。 だと思うのですが、 Dim i(10000) As Integer この場合どういう意味ですか? 教えていただきたいです。

  • Dim は何の略ですか?

    エクセルで変数の型宣言をするとき、例えば Dim 変数 As Integer と書きますが、このDimは何の略でしょうか? 宣言はdeclarationだし、Dimから考えられるのは Dimensionですが、これは次元とかの意味で少し 違うような気がするのですが。

  • VB6変数の宣言dim j,k,p,m,n as Integerは良くない?

    お世話になります。 VB暦1年です。 汎用の変数宣言でタイトルのように dim j,k,p,m,n as Integer dim ssa,ssb as String など、カンマ区切りで変数宣言を使っていたのですが 最近、知人にasの手前の変数は型どおり宣言されるが その手前の変数はVariant型で宣言されてしまうと指摘されました。 指摘されるまで気にはしていませんでしたが ウォッチで確認すると変数に代入されるまでは 型がVariant/Emptyとなってます。 以後、気をつければいいのですが 過去にコーディングしたプログラムにも多少、使用していて客先に納品してしまっているものもあります。 後々、問題になるのかな?

  • 小数点第2位の数値の計算

    下記のような処理があるとします。 Dim 変数1 As 宣言 Dim 変数2 As 宣言 Dim 変数3 As 宣言 Dim 変数4 As 宣言 変数1 = 0 変数2 = 0 変数3 = 0 変数4 = 0 変数1 = テキストボックス1.Text 変数2 = ラベル2.Caption 変数3 = ラベル3.Caption 変数4 = (変数2 + 変数3) - 変数1 ラベル4.Caption = 変数4 変数1~3には、小数点第2位までの 数値が入る事があるのですが、 例) 変数1 = 3.0 変数2 = 4.75 変数3 = 7.75 の場合、変数4 = 0 と計算される。 その場合、変数4の計算結果が 正しく出力されません。 宣言はDoubleを使うと計算結果は 16進数表示になり、Singleを使うと0になります。 正しい計算結果を出すには どのようにすれば良いでしょうか?

  • 型「double」「decimal」「float」について教えて下さい

    型「double」「decimal」「float」について教えて下さい。 VB2010とSQL Server 2008 R2 で開発を行っている初心者です。 単価が銭単位(例えば0.01円=1銭)の商品の金額計算を するとき、最初に変数を「Double」を使って、最後に小数点以下 のまるめ処理を行っていたところおかしな金額計算されてしまい ました。 具体的には、 Dim intSuryo As Integer Dim dblTanka As Double Dim dblKingaku As Double Dim marumeKingaku As Double If tbSuryoArray(i).Text <> Nothing Then If tbTankaArray(i).Text <> Nothing Then dblKingaku = 0 dblKingaku = intSuryo * dblTanka Select Case intMarumeKubun Case 1 : marumeKingaku = Math.Truncate(dblKingaku) '切り捨て Case 2 : marumeKingaku = Math.Round(dblKingaku, 0, MidpointRounding.AwayFromZero) '四捨五入 Case 3 : marumeKingaku = Math.Ceiling(dblKingaku) '切り上げ End Select のコードを書いて計算すると、(単価)4.31×(数量)5000 の計算が、 本来「21550」にならなければいけないのに「21549」になってしまいます。 いろいろ調べてみた結果、変数の型を「Double」にするのがいけなくて、 「Decimal」にすると誤差がなくなるということで、変数をすべて「Decimal」 に直したところ、誤差の現象がでなくなったので問題は解決しました。 問題がもうひとつおきました。 データベースの単価の型も変える必要があるかと思い、 SQL Server内のテーブルの単価のカラムを「float」から「decimal(18,0)」に 変えたところ、既に格納されている値がすべて整数に変わってしまいました。 何やらわけがわからず戸惑っていますが、同じ「Decimal」でもVBとSQL Server では利用方法が異なるのでしょうか? またVBでの「Double」と「Decimal」の使い分け、 SQL Serverでの「float」と「decimal」の使い分け、 について教えて下さい。 よろしくお願いします。

  • 整数→文字列の置換

    VB6の質問です。 ↓例で、REC変数を文字列の扱い(整数→文字列)にする方法はございますか? 宣言時の変数タイプは、変更したくありません。 宜しくお願いいたします。 Dim REC As Integer Private Sub test() As Integer  ・  ・  ・  ・ REC = '←処理結果をRECに入れる。RECには、文字列が挿入されます。 End Sub

専門家に質問してみよう