四捨五入切捨てと切り上げ

タグの編集
投稿者 おけべ  (学生) 投稿日時 2009/9/7 23:26:18
VBを始めたばかりの大学生です。

テキストボックス(Text1)に入力した数値が
ロストフォーカス時に小数点第一で四捨五入し、

たとえばテキストボックスに任意の数字を入力し、
(例)
2.0~2.4であれば2.0に切り捨て
2.5~2.9であれ3.0に切り上げ
と表示させたいのですが、どのようにコーディングさせればよろしいでしょうか?

ネットで検索してみると、VBの四捨五入Format、Fix、Intなどを使ったりと
出ていましたが、ピンときません。
vbだと四捨五入は完璧にできないとも書いてありました。

あまりに幼稚な質問で申し訳ありませんがよろしくお願いいたします。 
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2009/9/7 23:51:19
今から始めるという事なので、現行バージョンである VB9 すなわち「Visual Basic 2008」を
想像しましたが、質問内容の
> テキストボックス(Text1)に入力した数値が
> ロストフォーカス時に小数点第一で四捨五入し、
という発言からして、旧バージョンである VB6 をお使いのようですね。
(1998 年リリースの製品なので、流石に時代遅れの感が否めませんが…)

ちなみに VB8(2005)以降であれば、以下のように書けます。
Dim s As String = TextBox1.Text
Dim d As Decimal
If Decimal.TryParse(s, d) Then
    d = Decimal.Round(d, 0, MidpointRounding.AwayFromZero)
    s = d.ToString()
Else
    MsgBox("数値を入力してください")
End If



VB6だとすると、こうかな。
S = Text1.Text
S = CStr(Int(CDec(S) + CDec(".5")))
投稿者 (削除されました)  () 投稿日時 2009/9/8 00:15:22
(削除されました)
投稿者 流れ者  (社会人) 投稿日時 2009/9/8 00:18:02
こんにちは

少し補足します。

Int関数もFix関数も、正の数では両方とも、小数点以下の切捨てを行います。(負の数だと処理が違うので、それは自分で調べてください。)

どれで、魔界の仮面弁士のサンプルでは、0.5を足すことで、意図的に切り上げを行い、それをInt関数で切り捨てることで四捨五入を行っています。

元の数 +0.5する Int関数と通す。
1.1        1.6        1
1.4        1.9        1
1.5        2.0        2
1.6        2.1        2
2.0        2.5        2

といった感じです。 
 
  
投稿者 おけべ  (学生) 投稿日時 2009/9/8 04:20:09
魔界の仮面弁士さん、流れ者さん

アドバイスありがとうございます!

プログラムを勉強しておけば、就職に有利だから、勉強しておけ。
ゼミの教授に教えていただき、
うちの研究室にVB6.0があり、インストールし、触り始めました。

ちなみにうちのゼミはガチガチの文系であり、
所属している私自身文系人間のため、プログラム作成における論理的思考に苦しんでおります。
ただ、教授曰く「文系人間は仕様の把握が早く、SEにはたくさん文系がいる」
といっていましたが・・・。
先は遠そうですね。