• ベストアンサー

Excelのmod関数の戻り値

ExcelでMod関数を使用している最中に、割り切れる数値でも割る数値と同じ数値が返されます。例えば、「=mod(2.6,1.3)」では、「0」が返りますが「=mod(3.9,1.3)」だと「1.3」が返ってきます。これはどういうことなのか教えてください。

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

  • ベストアンサー
  • staratras
  • ベストアンサー率40% (1438/3508)
回答No.2

Execelのバージョンによっても、結果が違うようです。 手持ちのパソコンでExcel2003とExcel2013について、mod(1.3,1.3)からmod(13,1.3)まで被除数を1.3刻みで(商が1から10まで)調べてみたところ、正しく0と表示されたのは、どちらも商が1を含む2のべき乗(1,2,4,8)となる場合だけでした。 それ以外の場合、Excel2003では、-2.22045-E16(商が3と5の場合)、-4.44089-E16(商が6と10の場合)、-6.66134-E16(商が7の場合)、-1.11022-E15(商が9の場合)と表示されました。 一方Excel2013では、商が1.2.4.8以外のすべての場合には、ご質問のように1.3が表示されました。 余りと除数が同一ということでおかしいと気付くべきかもしれませんが、Excel2013のように「一見もっともらしい数値」を返されるよりも、昔のExcel2003のように明らかにコンピューター内部の計算誤差を示唆する数値を返してもらった方が、個人的にはありがたいと思います。 なおLinux系OSで使用している別の表計算ソフト「LibreOffice Calc(バージョン4.0.2.2)」ではすべて正しく0と表示されました。

sh2361
質問者

お礼

staratrasさんへ  早速の返答有難うございました。

その他の回答 (1)

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

コンピュータ(Excel)の内部では、小数は浮動小数点を持つ数値として扱われます。 2進数の小数なんかで表せるような数値はおおむね正確な値で保持されますが、 (1/2=0.5、3/4=0.75、5/32=0.15625とか) 1.3とかって数値は、コンピュータの内部では正確な値として保持されないです。 その結果、 Excel で浮動小数点演算の結果が正しくない場合がある http://support.microsoft.com/kb/78113/ja の記事にあるような計算誤差が出るって事になります。 10進数の計算だと、 1/3=0.333333333333333… 1/3×3=0.999999999999999… になるみたいな。

sh2361
質問者

お礼

neKo_deuxさん 早速の返答有難うございました。

関連するQ&A

  • エクセルVBAで mod関数

    はじめまして。 エクセルVBA初心者のも社会人です。 mod関数を使用して、 コマンドボタンを押すたびにコマンド1、コマンド2を繰り返すにはどのようにしたら良いのでしょうか? mod関数を使用してあまり0,1で行いたいのですがいまいちわかりません。 どなたかご教授お願いいたします。

  • MOD関数のMODって??

    エクセルの関数でMOD関数というのがありますが、 この『MOD』ってどういう意味なのですか? 英語の略か何かでしょうか?

  • MOD関数について詳しく教えてください

    Excelの関数なんですけど、 MOD(2,-9) はなんで -7なんですか?

  • MOD関数

    お世話になります。 MOD関数で、数値130を除数12にし、答えは10。 除数12は1月~12月を表したい。 1~12月に10が割り当てられるが、残った10を1月~10月に加算される(前から加算したい)関数を作るにはどうしたら良いでしょうか? よろしくお願いいたします。

  • Excel_MOD関数に関する質問

    某Yahooでも同じ質問をしたのですが、別の回答を得られるかもしれないと思ったのでこちらにも質問させて頂きます 学校の冬休みの課題でExcelのMOD関数についての課題が出ました その中で (1) =MOD(10,7)→3 (2) =MOD(10,-7)→-4 (3) =MOD(-10,7)→4 (4) =MOD(-10,-7)→-3 と、こんな感じで課題が出されました 通常、(2)は計算すると 3 (3)は -3 となるはずなんですが、 MOD関数を使うと -4と 4が出てきます。 なぜ異なる数値が出てくるのか解説をお願いいたします 回答を参考に自分なりにまとめて冬休みの課題として提出するので、説明お願いいたします。 PS。通常の計算で出てくる余りの部分自体が間違っていたらすみません。

  • AccessでExcelでのMOD関数と同じ計算をさせるには

    いつもお世話になっております。 Accessで割り算の余りを計算させたいのですが、 ExcelのMOD関数って、使えませんよね・・・? 何かよい方法がありましたら、教えてください。 クエリでもVBAでも結構です。 よろしくお願いします!!

  • 関数電卓 mod計算

    casio fx-915esの関数電卓を使用しているのですがmodの計算の仕方がわかりません.どのようにすれば関数電卓でmodを計算できるのか教えていただけると助かります.

  • Mod関数?に関して

    会社のASPのソースの中に以下のようなものがあります。 <% for iRowAnswer = 0 to ubound(ArrAnswer, 2)   if iRowAnswer Mod 4 = 0 And iRowAnswer > 0 then ・・・・・ とあるのですが、2行目のif文のModはどのように解釈すればよろしいのでしょうか? Modというと N = MOD(30,4) という感じで割り算の余りを計算する関数という認識しかないのですが、まったく違う使い方なのでしょうか? これだけでは分からないかも知れないのですが、どうぞよろしくお願い致します。

  • MOD関数を使って、1を2で割った余りが「1」になるのはなぜでしょうか

    MOD関数を使って、1を2で割った余りが「1」になるのはなぜでしょうか。すみませんが、よろしくお願いします。

  • エクセル関数に関して

    エクセルの関数に関して教えてください。 添付画像のように【セル1】と【セル2】の入力結果に応じて【セル3】に数値として答えを出すには、どの関数を使用すれば可能ですか?

専門家に質問してみよう