JSのフローティングポイントタイプはどうですか?
例:var a = 0.69;
6.9を直接取得してvar c = a*10を記述したい。
アラート(c);
オンラインで検索すると、一部のネチズンは、これがJSフローティングポイント計算バグであると述べ、解決策を見つけました。
方法1:JSカスタム関数
次のようにコードコードをコピーします。
<スクリプト>
//メソッドを追加して、正確な追加結果を取得します
//説明:JavaScriptの結果にはエラーが発生し、2つのフローティングポイント数値が追加されると、より明白になります。この関数は、追加のより正確な結果を返します。
//コール:accidd(arg1、arg2)
//返品値:Arg1とarg2の正確な結果
function acadd(arg1、arg2){{
var R1、R2、M;
try {r1 = arg1.toString( "。")[1] .length} catch(e){r1 = 0}
try {r2 = arg2.toString( "。")[1] .length} catch(e){r2 = 0}
m = math.pow(10、math.max(r1、r2)))
return(arg1*m+arg2*m)/m
}
//番号タイプに追加メソッドを追加します。これは、呼び出しがより便利です。
number.prototype.add = function(arg){
return acadd(arg、this);
}
//メソッドを追加して、正確な追加結果を取得します
//説明:JavaScriptの結果にはエラーが発生し、2つのフローティングポイント数値が追加されると、より明白になります。この関数は、追加のより正確な結果を返します。
//コール:accidd(arg1、arg2)
//返品値:Arg1とarg2の正確な結果
function accsub(arg1、arg2){{
var R1、R2、M、N;
try {r1 = arg1.toString( "。")[1] .length} catch(e){r1 = 0}
try {r2 = arg2.toString( "。")[1] .length} catch(e){r2 = 0}
m = math.pow(10、math.max(r1、r2));
// deekaによる最後の変更
//動的制御精度の長さ
n =(r1> = r2)?
return((arg1*m-rg2*m)/m).tofixed(n);
}
//メソッドを削除する正確な方法を取得する方法を除く
//説明:JavaScriptの結果にはエラーがあり、2つのフローティングポイント数値が削除されたときに明らかになります。この関数は、より正確な削除結果を返します。
//コール:accdiv(arg1、arg2)
//返品値:arg1を除くarg2の正確な結果を除く
function accdiv(arg1、arg2){{
var t1 = 0、t2 = 0、r1、r2;
try {t1 = arg1.toString( "。")[1] .length} catch(e){}
try {t2 = arg2.toString( "。")[1] .length} catch(e){}
(数学){
r1 = number(arg1.toString()。置換( "。"、 ""))
r2 = number(arg2.toString()。置換( "。"、 ""))
return(r1/r2)*pow(10、t2-t1);
}
}
// divメソッドを数値タイプに追加します。これは、呼び出しがより便利です。
number.prototype.div = function(arg){
return accdiv(this、arg);
}
//乗算関数正確な乗算結果を取得します
//説明:JavaScriptの乗算結果の結果にはエラーがあり、2つの浮遊点数値が乗算されると明らかになります。この関数は、より正確な乗算結果を返します。
//コール:Accmul(arg1、arg2)
//返品値:Arg1にArg2の正確な結果を掛けます
関数accmul(arg1、arg2)
{{
varm 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)
}
//数値タイプにmulメソッドを追加します。これは、呼び出しがより便利です。
number.prototype.mul = function(arg){
Accmulを返す(arg、this);
}
var a = 0.69;
var b = 10;
アラート(a*b);
アラート((a*100)/10);
</script>
関数を直接呼び出すだけです。
方法2:小数桁数を知っている場合は、整数に浮かぶ数値の数を退屈させることを検討できます(最終的に対応する倍数を分割してください)、操作を実行できます。
アラート(11*22.9);
アラート(11*(22.9*10)/10);