في JavaScript ، عندما تستخدم العشرات العشرية لأداء عمليات الإضافة والطرح والضرب والتقسيم ، ستجد أن النتيجة التي تم الحصول عليها تتبعها أحيانًا عشرية طويلة ، مما يجعل العملية معقدة وتؤثر على نتائج الحساب. لقد بحثت في الإنترنت للأسباب ، التي هي على النحو التالي: في JavaScript ، ستظهر العديد من الأماكن العشرية دائمًا عند عمليات البيانات ذات العشرية. هذا لأنه في JavaScript ، يتم حساب أرقام النقاط العائمة في رقمين.
نسخة الكود كما يلي:
/**
* عملية الإضافة لتجنب الأرقام متعددة الأرقام وخسائر دقة الحساب بعد إضافة نقاط عشرية إلى البيانات.
*
* 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]. الطول ؛
} catch (e) {
basenum2 = 0 ؛
}
basenum = math.pow (10 ، Math.Max (basenum1 ، basenum2)) ؛
العودة (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]. الطول ؛
} catch (e) {
basenum2 = 0 ؛
}
basenum = math.pow (10 ، Math.Max (basenum1 ، basenum2)) ؛
الدقة = (basenum1> = basenum2)؟ basenum1: basenum2 ؛
العودة ((num1 * basenum - num2 * basenum) / basenum) .Tofixed (الدقة) ؛
} ؛
/**
* عملية الضرب لتجنب الأرقام متعددة الأرقام وفقدان دقة الحساب بعد ضرب البيانات بنقاط عشرية.
*
* 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) {
}
رقم الإرجاع (num1.toString (). استبدال ("." ، "")) * رقم (num2.ToString (). استبدال (".
} ؛
/**
* عملية التقسيم لتجنب الأرقام متعددة الأرقام وخسائر دقة الحساب بعد تقسيم النقطة العشرية للبيانات.
*
* param num1 توزيع الأرباح |
*/
دالة 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]. الطول ؛
} catch (e) {
basenum2 = 0 ؛
}
مع (الرياضيات) {
basenum3 = number (num1.toString (). استبدال ("." ، "")) ؛
basenum4 = number (num2.ToString (). استبدال ("." ، "")) ؛
العودة (basenum3 / basenum4) * pow (10 ، basenum2 - basenum1) ؛
}
} ؛