最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

JS實(shí)現(xiàn)精確加減乘除的實(shí)例

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 19:58:43
文檔

JS實(shí)現(xiàn)精確加減乘除的實(shí)例

JS實(shí)現(xiàn)精確加減乘除的實(shí)例:項(xiàng)目中要使用 JS 實(shí)現(xiàn)自動(dòng)計(jì)算的功能,進(jìn)行一些浮點(diǎn)數(shù)運(yùn)算時(shí),計(jì)算結(jié)果卻是一長串的值,本文主要和大家分享JS實(shí)現(xiàn)精確加減乘除的實(shí)例,希望能幫助到大家。具體代碼如下://加法函數(shù) 2 function accAdd(arg1, arg2) { 3 var r1, r2, m; 4
推薦度:
導(dǎo)讀JS實(shí)現(xiàn)精確加減乘除的實(shí)例:項(xiàng)目中要使用 JS 實(shí)現(xiàn)自動(dòng)計(jì)算的功能,進(jìn)行一些浮點(diǎn)數(shù)運(yùn)算時(shí),計(jì)算結(jié)果卻是一長串的值,本文主要和大家分享JS實(shí)現(xiàn)精確加減乘除的實(shí)例,希望能幫助到大家。具體代碼如下://加法函數(shù) 2 function accAdd(arg1, arg2) { 3 var r1, r2, m; 4

項(xiàng)目中要使用 JS 實(shí)現(xiàn)自動(dòng)計(jì)算的功能,進(jìn)行一些浮點(diǎn)數(shù)運(yùn)算時(shí),計(jì)算結(jié)果卻是一長串的值,本文主要和大家分享JS實(shí)現(xiàn)精確加減乘除的實(shí)例,希望能幫助到大家。

具體代碼如下:

//加法函數(shù)
 2 function accAdd(arg1, arg2) {
 3 var r1, r2, m;
 4 try {
 5 r1 = arg1.toString().split(".")[1].length;
 6 }
 7 catch (e) {
 8 r1 = 0;
 9 }
10 try {
11 r2 = arg2.toString().split(".")[1].length;
12 }
13 catch (e) {
14 r2 = 0;
15 }
16 m = Math.pow(10, Math.max(r1, r2));
17 return (arg1 * m + arg2 * m) / m;
18 } 
19 //給Number類型增加一個(gè)add方法,,使用時(shí)直接用 .add 即可完成計(jì)算。 
20 Number.prototype.add = function (arg) {
21 return accAdd(arg, this);
22 };
23 
24 
25 //減法函數(shù)
26 function Subtr(arg1, arg2) {
27 var r1, r2, m, n;
28 try {
29 r1 = arg1.toString().split(".")[1].length;
30 }
31 catch (e) {
32 r1 = 0;
33 }
34 try {
35 r2 = arg2.toString().split(".")[1].length;
36 }
37 catch (e) {
38 r2 = 0;
39 }
40 m = Math.pow(10, Math.max(r1, r2));
41 //last modify by deeka
42 //動(dòng)態(tài)控制精度長度
43 n = (r1 >= r2) ? r1 : r2;
44 return ((arg1 * m - arg2 * m) / m).toFixed(n);
45 }
46 
47 //給Number類型增加一個(gè)add方法,,使用時(shí)直接用 .sub 即可完成計(jì)算。 
48 Number.prototype.sub = function (arg) {
49 return Subtr(this, arg);
50 };
51 
52 
53 //乘法函數(shù)
54 function accMul(arg1, arg2) {
55 var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
56 try {
57 m += s1.split(".")[1].length;
58 }
59 catch (e) {
60 }
61 try {
62 m += s2.split(".")[1].length;
63 }
64 catch (e) {
65 }
66 return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
67 } 
68 //給Number類型增加一個(gè)mul方法,使用時(shí)直接用 .mul 即可完成計(jì)算。 
69 Number.prototype.mul = function (arg) {
70 return accMul(arg, this);
71 }; 
72 
73 
74 //除法函數(shù)
75 function accDiv(arg1, arg2) {
76 var t1 = 0, t2 = 0, r1, r2;
77 try {
78 t1 = arg1.toString().split(".")[1].length;
79 }
80 catch (e) {
81 }
82 try {
83 t2 = arg2.toString().split(".")[1].length;
84 }
85 catch (e) {
86 }
87 with (Math) {
88 r1 = Number(arg1.toString().replace(".", ""));
89 r2 = Number(arg2.toString().replace(".", ""));
90 return (r1 / r2) * pow(10, t2 - t1);
91 }
92 } 
93 //給Number類型增加一個(gè)div方法,,使用時(shí)直接用 .div 即可完成計(jì)算。 
94 Number.prototype.div = function (arg) {
95 return accDiv(this, arg);
96 };

使用方法如下:

//加法示例(其它的都類似)
2 function calculate() {
3 //數(shù)字1
4 var num1 = 10;
5 //數(shù)字2
6 var num2 = 5;
7 //計(jì)算 num1 + num2
8 alert(num1.add(num2));
9 }

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

JS實(shí)現(xiàn)精確加減乘除的實(shí)例

JS實(shí)現(xiàn)精確加減乘除的實(shí)例:項(xiàng)目中要使用 JS 實(shí)現(xiàn)自動(dòng)計(jì)算的功能,進(jìn)行一些浮點(diǎn)數(shù)運(yùn)算時(shí),計(jì)算結(jié)果卻是一長串的值,本文主要和大家分享JS實(shí)現(xiàn)精確加減乘除的實(shí)例,希望能幫助到大家。具體代碼如下://加法函數(shù) 2 function accAdd(arg1, arg2) { 3 var r1, r2, m; 4
推薦度:
標(biāo)簽: js 精確 示例
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top