• ベストアンサー

VB6 丸めるとは?

VB6で、 Mod演算子のMSDNヘルプを見てみると、 「演算結果は整数に丸められる」 とあります。 例として19 Mod 6.6は5.8ですが5になってしまいます。 また、CInt関数について同じくヘルプで調べてみると、 「少数部分は丸められます」 とあり、CInt(5.8)とすると6となってしまいます。 質問なのですが、 「丸める」と一口にいっても、四捨五入したり、切り捨てたりといろいろあるのだという認識であっているでしょうか? CIntなら小数部は四捨五入され、Modならいかなる数字であろうと小数部は切り捨てられる、ということでよいでしょうか?

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

  • ベストアンサー
  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

>「丸める」と一口にいっても、四捨五入したり... その通りです。 四捨五入、切捨て、切上げ、偶数丸め(銀行方式)というものが含まれます。 Cintは四捨五入に近いですが偶数丸めです。 1.5は2ですが2.5も2になります。(四捨五入だと常に中間の値は切上げになりますが、この方式だと半々に分かれるためより正確な数値になります)。 Modは剰余を計算する関数です。 MSDNのヘルプによれば 「number1 または number2 が浮動小数点数値の場合は、除算が実行され、浮動小数点数の剰余が返されます」とありますのでDoubleなどで宣言した変数にいれれば少数になるでしょうし、それがIntなどであれば偶数丸めになるのではないでしょうか。現物がないので未確認ですが。

tochanx
質問者

お礼

どうもありがとうございました。 お礼が遅れてしまい申し訳ありませんでした。

その他の回答 (1)

  • dober-o
  • ベストアンサー率59% (260/439)
回答No.2

切り上げ、切り捨て、四捨五入・・・どれも「丸め」ですね 切り捨てならば Int や Fix がありますが 対象となる数値が負数のときには結果が変わります (Int は元の整数を超えない整数値化なので) 次に四捨五入については Excel 関数では Round がありますが VB においては完全には四捨五入にはならず #1さんの回答にある通り偶数丸め(Banker's Rounding)となります Excel 関数と VB とで違う結果を返すため混乱を招きますね CInt も Round と同じで偶数丸めです VB で四捨五入を実現する方法はいくつかありますが 例えば Format(5.5,"0") で 6 を返します 切り上げについてはちょっと複雑なので省略します Mod については結果自体が整数化(小数部切り捨て)されます

tochanx
質問者

お礼

お礼がこんなに遅れてしまい申し訳ありません。 とてもよくわかりました。 どうもありがとうございました。