Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2084 / 13645 ツリー ←次へ | 前へ→

【70051】少数第2位の四捨五入について sweet 11/10/12(水) 16:21 質問[未読]
【70052】Re:少数第2位の四捨五入について UO3 11/10/12(水) 17:24 回答[未読]
【70053】Re:少数第2位の四捨五入について sweet 11/10/12(水) 18:45 お礼[未読]
【70061】Re:少数第2位の四捨五入について UO3 11/10/12(水) 23:39 発言[未読]
【70062】Re:少数第2位の四捨五入について ichinose 11/10/13(木) 6:19 発言[未読]

【70051】少数第2位の四捨五入について
質問  sweet  - 11/10/12(水) 16:21 -

引用なし
パスワード
   218.95 の小数点第2位を四捨五入して 219.0 にする処理を
したくてWorksheetFunction.Roundを使いましたが
218.9 になってしまいます。
他に方法があればご教授ねがえませんしょうか。

【70052】Re:少数第2位の四捨五入について
回答  UO3  - 11/10/12(水) 17:24 -

引用なし
パスワード
   ▼sweet さん:

えっ? 219.0(219)になりますよ〜

Sub Test()
  Dim n As Double
  n = 218.95
  '1位「までで」四捨五入(2番目の引数は結果の小数点以下の桁数)
  MsgBox WorksheetFunction.Round(n, 1)
End Sub

【70053】Re:少数第2位の四捨五入について
お礼  sweet  - 11/10/12(水) 18:45 -

引用なし
パスワード
   UO3さん

早速のご教授ありがとうございます。
今、やってみたところ219になりました・・・

会社で作っているマクロでは確かに219にならなかったんですが・・・
他に原因があるのですね、きっと・・・

この関数が原因ではないのがわかったので別の原因を探ってみます。
ありがとうございました。

【70061】Re:少数第2位の四捨五入について
発言  UO3  - 11/10/12(水) 23:39 -

引用なし
パスワード
   ▼sweet さん:

もしかしたら会社ではワークシート関数ではなくVBA関数としてのRoundを使ったとか?
両者は、四捨五入の内部ロジックがちょっと異なります。

【70062】Re:少数第2位の四捨五入について
発言  ichinose  - 11/10/13(木) 6:19 -

引用なし
パスワード
   おはようございます。

>会社で作っているマクロでは確かに219にならなかったんですが・・・
>他に原因があるのですね、きっと・・・
この218.95という数値が、何かの計算の結果得られた数値なら、
小数誤差が関連しているかもしれませんよ!!
計算の結果が本当は、218.94999999 という値なのに
218.95と表示される例は、ありますからねえ!!
218.95という値のほうも良く調べてみてください。

小数を扱うときは、要注意ですよ!!

2084 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free