次の方法で共有

COMBIN関数の精度が低すぎる件

Anonymous
2023-09-01T12:24:28+00:00

CONBIN関数は組合せ数を求める関数です。組合せ数ですから当然結果は整数を返すと思っていたら、以下のような状態です。

MOD(COMBIN(35,16),1)=0.999998569

MOD(COMBIN(40,16),1)=0.999961853

MOD(COMBIN(41,16),1)=0.999984741

MOD(COMBIN(44,16),1)=0.999938965

つまり、結果は整数ではなく、小数点以下もある数値になっており、かつ誤差も1に迫るものになっています。

これは検証の仕方に問題があるのでしょうか?

それともCOMBIN関数が中途半端な仕様なのでしょうか?

これではではユーザーはCOMBIN関数の結果を参照するときは、INT関数とセットで使うという知識がないといけないということになってしまいませんか?

INT(COMBIN(35,16))というような使い方をしないと正しい整数値が返らないということだとすると、最初から関数内でそのような処理をいれておけばよい話です。

何か理由があってこのような仕様なのか、あるいはバグなのか、あるいは検証の仕方に問題があるのか、理由が判る方がいらっしゃったら教えてください。

Microsoft 365 と Office | Excel | ビジネス向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Hebikuzure aka Murachi Akira 325.9K 評価のポイント MVP ボランティア モデレーター
2023-09-02T04:38:35+00:00

仕様で Double だと書いてあるなら、利用者は必要に応じて Int などを使えばよいわけで、どうしてそのような仕様なのかはここで議論しても正解はありません。納得いかないとしても、それはここで他の参加者に言うことではなく、Microsoft にフィードバックするなりサポートリクエストするなりしてください(サポートリクエストには費用が掛かります)。

この回答は役に立ちましたか?

1 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

12 件の追加の回答

並べ替え方法: 最も役に立つ
  1. kt-1688 113.5K 評価のポイント ボランティア モデレーター
    2023-09-01T18:00:38+00:00

    浮動小数点演算が Excel で不正確な結果をもたらす可能性があるー Microsoft Lean

    他に「浮動小数点 Excel」でググったり、BingAIで調べられると認識が変わると思います。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. simo-k 85,415 評価のポイント ボランティア モデレーター
    2023-09-01T13:59:36+00:00
    OpenAIを使用した回答
    COMBIN関数は、整数の限界を超える可能性がある為に浮動小数点数を返すように設計しているとのことですが、整数には限界があるのですか?
    はい、整数には限界があります。コンピューターは、有限のビット数で数値を表現するため、表現できる整数の範囲には限界があります。<br><br>例えば、32ビットの整数型では、-2,147,483,648から2,147,483,647までの整数しか表現できません。<br><br>COMBIN関数は、このような限界を超える可能性があるため、浮動小数点数を返すように設計されています。

    <追記>

     AIの言い回しは、学習を進めていけば変わってくると思います。

    <追記2>

     設計仕様について不満がある様でしたら、AI回答の通りフィードバックして下さい。

    <追記3>

    > 組合せ数ですから当然結果は整数を返すと思っていたら

     関数リファレンスには、「戻り値」について記載されてないですね。

     これもフィードバックしても良いかも分かりませんね。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2023-09-01T12:54:24+00:00

    >大きな数値を扱う場合に、整数の限界を超える可能性があるためです。

    意味不明です。「整数の限界を超える」とはどういう意味ですか?

    整数に限界があるのですか?

    >COMBIN関数の結果が整数であることを必要とする場合は・・・

    このような言い回しは、詭弁と言わざるを得ません、

    組合せ数が整数でなくてもよいと思う人はいるのでしょうか?

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. simo-k 85,415 評価のポイント ボランティア モデレーター
    2023-09-01T12:39:30+00:00

    COMBIN 関数

    OpenAIを使用した回答
    COMBIN関数は、浮動小数点数を返すように設計されています。<br><br>これは、大きな数値を扱う場合に、整数の限界を超える可能性があるためです。<br><br>このため、COMBIN関数の結果が整数であることを必要とする場合は、INT関数を使用する必要があります。<br><br>このような仕様は、Microsoft Excelの設計上の決定であり、バグではありません。<br><br>ただし、この仕様についてのフィードバックは、Microsoftに送信することができます。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません