次方的运算"/>
C#天文级别幂次方的运算
在模拟挂机经营游戏中,我们有时候会遇到类似于“1.02的十万幂次方”这种要求,当然这种用任意值类型肯定是存不下的,这里就需要天文级别数字的加减乘法。
然后通过分治的思路,进行进一步的封装:
/// <summary>/// 倍率计算/// 底值 等级 分治数/// </summary>private string GetRate(float _rate, int _leve,int _background){var _str = "1";float _basic = Mathf.Pow(_rate, _background);//Debug.Log(_basic);int _factorial = _leve / _background;//阶乘N次int _remainder = _leve % _background;//余下次方//Debug.Log(_factorial + " " + _remainder);if (_factorial > 0){for (var _i = 0; _i < _factorial; _i++) _str = BigDatenumMulitfy(_str, _basic);}_str = BigDatenumMulitfy(_str, Mathf.Pow(_rate, _remainder));return _str;}
最后包装一下,这里由于每个数不太一样,所以需要单独处理,比如1.02最大400次方,是个可求得的float值。所以调用写法如下:
Debug.LogError(GetRate(1.02f, 10000, 25));//十万还需优化,先拿一万搞一下
最后打印结果:
当然我们也可以用个小些的数字,比如26位,来验算一下,结果如下:
更多推荐
C#天文级别幂次方的运算
发布评论