Maison > interface Web > js tutoriel > Exemple d'implémentation d'addition, soustraction, multiplication et division précises à l'aide de JS

Exemple d'implémentation d'addition, soustraction, multiplication et division précises à l'aide de JS

小云云
Libérer: 2018-03-21 17:13:33
original
1670 Les gens l'ont consulté

Dans le projet, JS est utilisé pour implémenter le calcul automatique. Lors de l'exécution de certains calculs à virgule flottante, le résultat du calcul est une longue liste de valeurs. Cet article partage principalement avec vous des exemples d'addition, de soustraction, de multiplication et de division précises. JS. J'espère que cela pourra vous aider.

Le code spécifique est le suivant :

//加法函数
 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类型增加一个add方法,,使用时直接用 .add 即可完成计算。 
20 Number.prototype.add = function (arg) {
21     return accAdd(arg, this);
22 };
23 
24 
25 //减法函数
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      //动态控制精度长度
43     n = (r1 >= r2) ? r1 : r2;
44     return ((arg1 * m - arg2 * m) / m).toFixed(n);
45 }
46 
47 //给Number类型增加一个add方法,,使用时直接用 .sub 即可完成计算。 
48 Number.prototype.sub = function (arg) {
49     return Subtr(this, arg);
50 };
51 
52 
53 //乘法函数
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类型增加一个mul方法,使用时直接用 .mul 即可完成计算。 
69 Number.prototype.mul = function (arg) {
70     return accMul(arg, this);
71 }; 
72 
73 
74 //除法函数
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类型增加一个div方法,,使用时直接用 .div 即可完成计算。 
94 Number.prototype.div = function (arg) {
95     return accDiv(this, arg);
96 };
Copier après la connexion

La méthode d'utilisation est la suivante :

//加法示例(其它的都类似)
2 function calculate() {
3     //数字1
4     var num1 = 10;
5     //数字2
6     var num2 = 5;
7     //计算 num1 + num2
8     alert(num1.add(num2));
9 }
Copier après la connexion

Recommandations associées :

Addition, soustraction, multiplication et division précises JS Explication détaillée

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal