質問: keisan end sub この場合、a1は1と入るのですが、なぜ1なのですか。 vbaの試験があるので、なんとか覚えたいのです。 さっぱりわからず、困っています。教えてください。 お助けください。
回答: > ようするに、切捨てや繰上げなどあるみたいなのですが、よく分からず困っているのです。 mod演算子のヘルプに、 「このとき浮動小数点数は整数に丸められます」 と書かれています。 では、どのように丸められるか実験してみましょう。 15 を 1.5 で割った余りを考えます。 手で計算すると 割算の答えは 10 で余りは 0 ですね。 では、イミディエイトウィンドウで計算すると ? 15 mod 1.5 1 結果は 1 です。 あ、これは先に丸めて 15 mod 2 を計算しているんだな、 ということが分かりますね。 他にも計算してみましょう。 ? 15 mod 1.4 0 (15 mod 1) に一致 ? 15 mod 1.6 1 (15 mod 2) に一致 ここで、四捨五入されたと考えるのはまだ早い。 次に 15 mod 2.5 を計算してみましょう。 ? 15 mod 2.5 1 あれれ? 四捨五入なら 15 mod 3 で 0 になるはずですね。 どうなっているの??? 答えは、ここで行われているのは四捨五入ではなく 銀行型丸めといわれているもので 小数部が .5 の場合に、偶数に丸めるというものです。 1.5 の場合には、1 と 2 のうち、偶数である 2 の方に丸められ 2.5 の場合には、2 と 3 のうち、偶数である 2 の方に丸められるのです。 vba のround 関数も同様の丸めが行われます。 四捨五入が必要なら、自作関数などの工夫が必要になります。 お分かりいただけたでしょうか。