JS 小数加减乘除(防止精度损失)
/** 
  * 加法运算,避免数据相加小数点后产生多位数和计算精度损失。
  *
  * @param num1加数1 | num2加数2
  */
 
 function numAdd(num1, num2) {
   var baseNum, baseNum1, baseNum2;
   try {
       baseNum1 = num1.toString().split(".")[1].length;
   } catch (e) {
       baseNum1 = 0;
   }
   try {
       baseNum2 = num2.toString().split(".")[1].length;
   } catch (e) {
       baseNum2 = 0;
   }
   baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
   return (num1 * baseNum + num2 * baseNum) / baseNum;
 }
 
 /** 
  * 加法运算,避免数据相减小数点后产生多位数和计算精度损失。
  *
  * @param num1被减数 | num2减数
  */
 function numSub(num1, num2) {
   var baseNum, baseNum1, baseNum2;
   var precision; // 精度 
   try {
       baseNum1 = num1.toString().split(".")[1].length;
   } catch (e) {
       baseNum1 = 0;
   }
   try {
       baseNum2 = num2.toString().split(".")[1].length;
   } catch (e) {
       baseNum2 = 0;
   }
   baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
   precision = (baseNum1 >= baseNum2) ? baseNum1 : baseNum2;
   return ((num1 * baseNum - num2 * baseNum) / baseNum).toFixed(precision);
 }
 
 /** 
  * 乘法运算,避免数据相乘小数点后产生多位数和计算精度损失。
  *
  * @param num1被乘数 | num2乘数
  */
 function numMulti(num1, num2) {
   var baseNum = 0;
   try {
       baseNum += num1.toString().split(".")[1].length;
   } catch (e) {}
   try {
       baseNum += num2.toString().split(".")[1].length;
   } catch (e) {}
   return Number(num1.toString().replace(".", "")) * Number(num2.toString().replace(".", "")) / Math.pow(10, baseNum);
 }
 
 /** 
  * 除法运算,避免数据相除小数点后产生多位数和计算精度损失。
  *
  * @param num1被除数 | num2除数
  */
 function numDiv(num1, num2) {
   var baseNum1 = 0,
       baseNum2 = 0;
   var baseNum3, baseNum4;
   try {
       baseNum1 = num1.toString().split(".")[1].length;
   } catch (e) {
       baseNum1 = 0;
   }
   try {
       baseNum2 = num2.toString().split(".")[1].length;
   } catch (e) {
       baseNum2 = 0;
   }
   with(Math) {
       baseNum3 = Number(num1.toString().replace(".", ""));
       baseNum4 = Number(num2.toString().replace(".", ""));
       return (baseNum3 / baseNum4) * pow(10, baseNum2 - baseNum1);
   }
 }

转自:https://blog.csdn.net/qq_41330414/article/details/80949817

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇