<bdo id='Wt5zu'></bdo><ul id='Wt5zu'></ul>

  • <tfoot id='Wt5zu'></tfoot>
    <i id='Wt5zu'><tr id='Wt5zu'><dt id='Wt5zu'><q id='Wt5zu'><span id='Wt5zu'><b id='Wt5zu'><form id='Wt5zu'><ins id='Wt5zu'></ins><ul id='Wt5zu'></ul><sub id='Wt5zu'></sub></form><legend id='Wt5zu'></legend><bdo id='Wt5zu'><pre id='Wt5zu'><center id='Wt5zu'></center></pre></bdo></b><th id='Wt5zu'></th></span></q></dt></tr></i><div id='Wt5zu'><tfoot id='Wt5zu'></tfoot><dl id='Wt5zu'><fieldset id='Wt5zu'></fieldset></dl></div>

    1. <small id='Wt5zu'></small><noframes id='Wt5zu'>

      <legend id='Wt5zu'><style id='Wt5zu'><dir id='Wt5zu'><q id='Wt5zu'></q></dir></style></legend>

        你如何在 C# 中做 *integer* 幂运算?

        时间:2023-07-25
        <legend id='h0MAC'><style id='h0MAC'><dir id='h0MAC'><q id='h0MAC'></q></dir></style></legend>

        <small id='h0MAC'></small><noframes id='h0MAC'>

          <i id='h0MAC'><tr id='h0MAC'><dt id='h0MAC'><q id='h0MAC'><span id='h0MAC'><b id='h0MAC'><form id='h0MAC'><ins id='h0MAC'></ins><ul id='h0MAC'></ul><sub id='h0MAC'></sub></form><legend id='h0MAC'></legend><bdo id='h0MAC'><pre id='h0MAC'><center id='h0MAC'></center></pre></bdo></b><th id='h0MAC'></th></span></q></dt></tr></i><div id='h0MAC'><tfoot id='h0MAC'></tfoot><dl id='h0MAC'><fieldset id='h0MAC'></fieldset></dl></div>
          • <bdo id='h0MAC'></bdo><ul id='h0MAC'></ul>
            <tfoot id='h0MAC'></tfoot>

                <tbody id='h0MAC'></tbody>

                  本文介绍了你如何在 C# 中做 *integer* 幂运算?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  .NET 中的内置 Math.Pow() 函数将 double 基数提升为 double 指数并返回 >double 结果.

                  The built-in Math.Pow() function in .NET raises a double base to a double exponent and returns a double result.

                  用整数做同样的事情的最好方法是什么?

                  What's the best way to do the same with integers?

                  补充:似乎可以将 Math.Pow() 结果转换为 (int),但这总是会产生正确的数字且不会出现舍入错误吗?

                  Added: It seems that one can just cast Math.Pow() result to (int), but will this always produce the correct number and no rounding errors?

                  推荐答案

                  一个相当快的可能是这样的:

                  A pretty fast one might be something like this:

                  int IntPow(int x, uint pow)
                  {
                      int ret = 1;
                      while ( pow != 0 )
                      {
                          if ( (pow & 1) == 1 )
                              ret *= x;
                          x *= x;
                          pow >>= 1;
                      }
                      return ret;
                  }
                  

                  请注意,这不允许负幂.我会把它作为练习留给你.:)

                  Note that this does not allow negative powers. I'll leave that as an exercise to you. :)

                  已添加:哦,是的,差点忘了 - 还要添加上溢/下溢检查,否则您可能会遇到一些令人讨厌的惊喜.

                  Added: Oh yes, almost forgot - also add overflow/underflow checking, or you might be in for a few nasty surprises down the road.

                  这篇关于你如何在 C# 中做 *integer* 幂运算?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:比较 Double 和 Int 的最佳方法是什么? 下一篇:为什么空字符串上的 .ToString() 会导致空错误,而 .ToString() 在具有空值的可空 int 上工作正

                  相关文章

                • <tfoot id='Taftt'></tfoot>

                  1. <small id='Taftt'></small><noframes id='Taftt'>

                      <bdo id='Taftt'></bdo><ul id='Taftt'></ul>

                    1. <legend id='Taftt'><style id='Taftt'><dir id='Taftt'><q id='Taftt'></q></dir></style></legend>
                    2. <i id='Taftt'><tr id='Taftt'><dt id='Taftt'><q id='Taftt'><span id='Taftt'><b id='Taftt'><form id='Taftt'><ins id='Taftt'></ins><ul id='Taftt'></ul><sub id='Taftt'></sub></form><legend id='Taftt'></legend><bdo id='Taftt'><pre id='Taftt'><center id='Taftt'></center></pre></bdo></b><th id='Taftt'></th></span></q></dt></tr></i><div id='Taftt'><tfoot id='Taftt'></tfoot><dl id='Taftt'><fieldset id='Taftt'></fieldset></dl></div>