我是靠谱客的博主 调皮鞋垫,最近开发中收集的这篇文章主要介绍前端企业面试题:企业真实案例——39,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

大数计算如何实现?

通常的思路是考虑将数字转换为字符串,然后再每一位进行计算

我们以加法为例:

let add = function(num1, num2) {
  // 将短的数字长度补齐,左侧补0
  let len = Math.abs(num1.length-num2.length);
  let bu = "";
  for(let i=0; i<; i++){
    bu += "0";
  }
  // 将短的数字长度补齐,左侧补0
  if(num1.length>num2.length) {
    num2 = bu + num2;
  } else if(num1.length<num2.length){
    num1 = bu + num1;
  } 
  
  let bit = 0;  //相加后的进位,第一次计算时默认为0
  let result = ''; //保存累加的结果
  let temp = 0;  //临时计算结果
  for(let i=num1.length-1; i>=0;  i--){
    //计算该位相加结果,把之前的进位也计算进来
    temp = bit + Number(num1[i]) + Number(num2[i]);
    //将相加结果对10求余,累加到结果中
    result = (temp%10) + result; 
    //将相加结果除以10取整,得到进位数
    bit = parseInt(temp/10)
  }
  //当每一位都相加完毕, 判断bit是否进位
  //若有进位,则在整体结果前再加1
  return result = (bit === 1 ? '1' : '') + result;
}

 

在ES2020的新规范中,我们有了大数类型bigInt

//在整数字面量后面加n。
var bigIntNum = 9007199254740993n;

//使用 BigInt 函数。
var bigIntNum = BigInt(9007199254740);
var anOtherBigIntNum = BigInt('9007199254740993');

//通过 BigInt, 我们可以安全的进行大数整型计算
var bigNumRet = 9007199254740993n+ 9007199254740993n; //  18014398509481986n
bigNumRet.toString(); //  '18014398509481986'

最后

以上就是调皮鞋垫为你收集整理的前端企业面试题:企业真实案例——39的全部内容,希望文章能够帮你解决前端企业面试题:企业真实案例——39所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部