Heim > Web-Frontend > js-Tutorial > Genaue Berechnung von js-Gleitkommazahlen

Genaue Berechnung von js-Gleitkommazahlen

一个新手
Freigeben: 2017-10-16 10:07:43
Original
1867 Leute haben es durchsucht

//Divisionsfunktion, die verwendet wird, um genaue Divisionsergebnisse zu erhalten
//Erklärung: Das Divisionsergebnis von JavaScript weist Fehler auf, die bei der Division zweier Gleitkommazahlen offensichtlicher sind. Diese Funktion gibt ein genaueres Divisionsergebnis zurück.
//Aufruf: accp(arg1,arg2)
//Rückgabewert: das genaue Ergebnis der Division von arg1 durch arg2

function accp(arg1,arg2){
    var t1=0,t2=0,r1,r2;
    try{t1=arg1.toString().split(".")[1].length}catch(e){}
    try{t2=arg2.toString().split(".")[1].length}catch(e){}
    with(Math){
        r1=Number(arg1.toString().replace(".",""));
        r2=Number(arg2.toString().replace(".",""));
        return (r1/r2)*pow(10,t2-t1);
    }
}
Nach dem Login kopieren

//Geben Number Durch das Hinzufügen einer p-Methode zum Typ wird der Aufruf komfortabler.
Number.prototype.p = function (arg){
return accp(this, arg);
}
//Multiplikationsfunktion, wird verwendet, um genaue Multiplikationsergebnisse zu erhalten
//Erklärung: Das Multiplikationsergebnis von JavaScript weist Fehler auf, die deutlicher sichtbar werden, wenn zwei Gleitkommazahlen multipliziert werden. Diese Funktion gibt ein genaueres Multiplikationsergebnis zurück.
//Aufruf: accMul(arg1,arg2)
//Rückgabewert: das genaue Ergebnis von arg1 multipliziert mit arg2

function accMul(arg1,arg2)
{
    var m=0,s1=arg1.toString(),s2=arg2.toString();
    try{m+=s1.split(".")[1].length}catch(e){}
    try{m+=s2.split(".")[1].length}catch(e){}
    return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m);
}
Nach dem Login kopieren

//Geben Number Fügen Sie dem Typ eine mul-Methode hinzu, um den Aufruf zu vereinfachen.

Number.prototype.mul = function (arg){
    return accMul(arg, this);
};
Nach dem Login kopieren

//Add-Funktion, die verwendet wird, um genaue Additionsergebnisse zu erhalten
//Erklärung: Das Additionsergebnis von JavaScript weist Fehler auf und wird beim Addieren zweier Gleitkommazahlen offensichtlich verglichen . Diese Funktion gibt ein genaueres Additionsergebnis zurück.
//Aufruf: accAdd(arg1,arg2)
//Rückgabewert: das genaue Ergebnis von arg1 plus arg2

function accAdd(arg1,arg2){
    var r1,r2,m;
    try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
    try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
    m=Math.pow(10,Math.max(r1,r2));
    return (arg1*m+arg2*m)/m;
}
Nach dem Login kopieren
//给Number类型增加一个add方法,调用起来更加方便。
Number.prototype.add = function (arg){
    return accAdd(arg,this);
}
//减法函数
function accSub(arg1,arg2){
     var r1,r2,m,n;
     try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
     try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
     m=Math.pow(10,Math.max(r1,r2));
     //last modify by deeka
     //动态控制精度长度
     n=(r1>=r2)?r1:r2;
     return ((arg2*m-arg1*m)/m).toFixed(n);
}
///给number类增加一个sub方法,调用起来更加方便
Number.prototype.sub = function (arg){
    return accSub(arg,this);
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonGenaue Berechnung von js-Gleitkommazahlen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage