JavaScriptでは、小数を使用して追加、減算、乗算、および分割操作を実行すると、得られた結果の後に長い小数が続くことがわかります。これにより、操作が複雑になり、計算結果に影響します。私はインターネットを検索しましたが、それはほぼ次のとおりです。JavaScriptでは、小数のあるデータ操作の場合、多くの小数点の場所が常に表示されます。これは、JavaScriptでは、フローティングポイント数が2桁で計算されるためです。
コードコピーは次のとおりです。
/**
*データに小数点を追加した後の複数桁の数値と計算精度の損失を回避するための追加操作。
*
* @param num1番号1を追加| num2追加番号2を追加します
*/
関数numadd(num1、num2){
Var Basenum、Basenum1、Basenum2;
試す {
basenum1 = num1.tostring()。split( "。")[1] .length;
} catch(e){
Basenum1 = 0;
}
試す {
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が減算されます
*/
関数numsub(num1、num2){
Var Basenum、Basenum1、Basenum2;
var precision; //精度
試す {
basenum1 = num1.tostring()。split( "。")[1] .length;
} catch(e){
Basenum1 = 0;
}
試す {
basenum2 = num2.tostring()。split( "。")[1] .length;
} catch(e){
basenum2 = 0;
}
basenum = math.pow(10、math.max(basenum1、basenum2));
精密=(basenum1> = basenum2)? Basenum1:basenum2;
return((num1 * basenum -num2 * basenum) / basenum).tofixed(precision);
};
/**
*データの数十進ポイントを掛けた後の複数桁の数値と計算精度の損失を回避するための乗算操作。
*
* @param num1乗数| Num2乗数
*/
関数nummulti(num1、num2){
var basenum = 0;
試す {
Basenum += num1.tostring()。split( "。")[1] .length;
} catch(e){
}
試す {
Basenum += num2.tostring()。split( "。")[1] .length;
} catch(e){
}
return number(num1.toString()。置き換え( "。"、 "")) * number(num2.toString()。置換( "
};
/**
*データの小数点を分割した後の複数桁の数と計算精度の損失を回避するための分割操作。
*
* @param num1配当| num2配当
*/
関数numdiv(num1、num2){
var basenum1 = 0、basenum2 = 0;
var basenum3、basenum4;
試す {
basenum1 = num1.tostring()。split( "。")[1] .length;
} catch(e){
Basenum1 = 0;
}
試す {
basenum2 = num2.tostring()。split( "。")[1] .length;
} catch(e){
basenum2 = 0;
}
(数学){
basenum3 = number(num1.toString()。置換( "。"、 ""));
basenum4 = number(num2.toString()。置換( "。"、 ""));
return(basenum3 / basenum4) * pow(10、basenum2 -basenum1);
}
};