ฉันเคยค้นหารหัสนี้บนอินเทอร์เน็ตมาก่อน แต่ภายใต้เงื่อนไขเฉพาะการแบ่งและการดำเนินการเพิ่มเติมจะยังคงปรากฏขึ้น
คัดลอกรหัสรหัสดังนี้:
// ยกเว้นวิธีการที่จะได้วิธีการลบวิธีการที่แม่นยำ
// คำอธิบาย: ผลลัพธ์ของ JavaScript จะมีข้อผิดพลาดและมันจะชัดเจนเมื่อลบตัวเลขสองจุดลอยตัว ฟังก์ชั่นนี้ส่งคืนผลลัพธ์การกำจัดที่แม่นยำยิ่งขึ้น
// โทร: accdiv (arg1, arg2)
// ค่าส่งคืน: arg1 ยกเว้นผลลัพธ์ที่ถูกต้องของ arg2
ฟังก์ชั่น accdiv (arg1, arg2) {{
var t1 = 0, t2 = 0, r1, r2;
ลอง {t1 = arg1.toString ()
ลอง {t2 = arg2.toString ()
ด้วย (คณิตศาสตร์) {
r1 = number (arg1.toString (). แทนที่ (".", ""))
r2 = number (arg2.toString (). แทนที่ (".", ""))
return accmul ((r1 / r2), pow (10, t2 -t1));
-
-
คัดลอกรหัสรหัสดังนี้:
// ฟังก์ชั่นการคูณเพื่อให้ได้ผลลัพธ์การคูณที่แม่นยำ
// คำอธิบาย: ผลลัพธ์ของผลลัพธ์การคูณ JavaScript จะมีข้อผิดพลาดและจะชัดเจนเมื่อตัวเลขสองจุดลอยตัวถูกคูณ ฟังก์ชั่นนี้ส่งคืนผลลัพธ์การคูณที่แม่นยำยิ่งขึ้น
// โทร: Accmul (Arg1, Arg2)
// ค่าส่งคืน: Arg1 ถูกคูณด้วยผลลัพธ์ที่ถูกต้องของ Arg2
ฟังก์ชั่น accmul (arg1, arg2) {{
varm M = 0, s1 = arg1.toString (), s2 = arg2.toString ();
ลอง {m += s1.split (".") [1] .length} catch (e) {}
ลอง {m += s2.split (".") [1] .length} catch (e) {}
หมายเลขส่งคืน (s1.replace (".", "") * หมายเลข (s2.replace (".", "") / math.pow (10, m)
-
คัดลอกรหัสรหัสดังนี้:
// เพิ่มวิธีการในการคำนวณโซลูชันระดับกลาง
Function Acadd (Arg1, Arg2) {{
var r1, r2, m, c;
ลอง {r1 = arg1.toString ()
ลอง {r2 = arg2.toString ()
C = Math.Abs (R1 -R2);
m = math.pow (10, math.max (r1, r2)))))
if (c> 0) {{
var cm = math.pow (10, c);
if (r1> r2) {
arg1 = number (arg1.toString (). แทนที่ ("". "," ");
arg2 = number (arg2.toString (). แทนที่ (".", "") * cm;
-
อื่น {
arg1 = number (arg1.toString (). แทนที่ (".", "") * cm;
arg2 = number (arg2.toString (). แทนที่ ("". "," ");
-
-
อื่น {
arg1 = number (arg1.toString (). แทนที่ ("". "," ");
arg2 = number (arg2.toString (). แทนที่ ("". "," ");
-
return accdiv ((arg1 + arg2), m);
-