プロが教える店舗&オフィスのセキュリティ対策術

dim a as double
dim b , c as integer

a=b/c とした時、b/cが割りきれない場合は
aを四捨五入して少数第1位まで表示したいのですが
その時はどのようにすればよいですか?

label1.captin=aとして表示したいのですが
label1のdataなんとか・・・プロパティをかえてもだめでした。

A 回答 (2件)

0.3456を小数点第1位で計算するとき


10倍 → 3.456
0.5をたす → 3.956
整数のみ取得 → 3
10で割る → 0.3

0.3456を小数点第2位で計算するとき
100倍 → 34.56
0.5をたす → 35.06
整数のみ取得 → 35
100で割る → 0.35

0.3456を小数点第2位で計算するとき
1000倍 → 345.6
0.5をたす → 356.1
整数のみ取得 → 356
1000で割る → 0.356

といった処理になります。

以下のソースを試してください。。。

Sub Main()
  Dim a As Double
  
  Dim b, c As Integer
  
  b = 2
  c = 3
  
  a = b / c
  Me.Label1.Caption = funcRound(a, 2)
End Sub

'パラメータ1:ダブル型の数
'パラメータ2:小数点第何位にするかの値
Function funcRound(inDbl As Double, inRoundNum As Long) As Double
  Dim wkLng  As Long
  
  wkLng = 10 ^ inRoundNum
  
  funcRound = Int((inDbl * wkLng) + 0.5) / wkLng
End Function
    • good
    • 0

訂正です


0.3456を小数点第2位で計算するとき
1000倍 → 345.6
0.5をたす → 356.1
整数のみ取得 → 356
1000で割る → 0.356

の部分は

0.3456を小数点第2位で計算するとき
1000倍 → 345.6
0.5をたす → 346.1
整数のみ取得 → 346
1000で割る → 0.346

です。
    • good
    • 0
この回答へのお礼

いつもありがとうございます。

少数表示なりました。
ただMe.Label1.Caption = funcRound(a, 2) では
エラーになりました。
Me.Label1.Caption = Round(a, 2)
にするとうまくいきました。

お礼日時:2001/11/11 23:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!