بالنسبة للأعداد الكبيرة أو الصغيرة جدًا ، يمكن استخدام الترميز العلمي لتمثيل قيم النقطة العائمة. باستخدام التدوين العلمي ، يمكن تمثيل الرقم كرقم بالإضافة إلى E/E ، متبوعًا بمضاعفات 10 ، مثل:
نسخة الكود كما يلي:
var num1 = 3.125e7 ؛ // 31250000 var num2 = 3e-17 ؛ // 0.0000000000000000000000000000000000003
لإضافة أو طرح أرقام كبيرة بشكل خاص ، يمكنك استخدام طرق الترميز العلمي للسلسلة + لتنفيذ الطريقة ، مثل:
نسخة الكود كما يلي:
// فقط النظر في أعداد صحيحة كبيرة ، ولا تعتبر الوظيفة العشرية stradd (snum1 ، snum2) {
/*أضف رقمًا لتسجيل الحالة التي يكون فيها أعلى رقم*//
var snum1 = ['0' ، snum1]. join ('') ، snum2 = ['0' ، snum2].
/*أضف 0 إلى سلاسل رقمية قصيرة*/
var len1 = snum1.length ، len2 = snum2.length ،
Zeroarr = function (len) {
var arr = new array (len) ، i = len ؛
بينما (i-) {arr [i] = 0 ؛}
إرجاع arr ؛
} ؛
if (len1> len2) {
var arrtemp = Zeroarr (len1 - len2) ؛
arrtemp.push (snum2) ،
snum2 = arrtemp.join ('') ؛
}
آخر إذا (len2> len1) {
var arrtemp = Zeroarr (len2 - len1) ؛
arrtemp.push (snum1) ،
snum1 = arrtemp.join ('') ؛
}
/*تحويل السلاسل إلى المصفوفات وإضافتها بالأرقام المقابلة*/
var arr1 = snum1.split ('') ، arr2 = snum2.split ('') ؛
var arraddres = array (arr1.length) ، i = arr1.length ؛
var andone = 0 ، // ما إذا كانت الإضافة الجزء السفلي هي cur1 ، cur2 ، curadd ؛
بينما (أنا-) {
cur1 = +arr1 [i] ، cur2 = +arr2 [i] ؛
curadd = cur1+cur2+andone ؛
إذا (10> curadd)
arraddres [i] = curadd ،
Andone = 0 ؛
آخر
arraddres [i] = +curadd.tostring (). slice (1،2) ،
Andone = 1 ؛
}
if (! Andone) {// أخيرًا ، ما إذا كنت ستقدم خطوة إلى الأمام ، وإلا فاعرض 0 arraddres.splice (0،1) ؛
}
/*إذا كان هناك رقم 19 رقمًا في المصفوفة ، فاستخدم الترميز العلمي لتمثيل النتيجة*/
var keeplen = 19 ؛ // يحتفظ العشري من JS فقط بالأرقام الـ 18 بعد النقطة العشرية var eafter = arraddres.length - 1 ؛ // الجزء المتعدد بعد e var eBefore ، ebeforestr = '' ؛ // الجزء العشري قبل ه
إذا (keeplen <arraddres.length)
eBeforestr = [arraddres [0] ، '.' ، arraddres.slice (1 ، keeplen). join ('')].
آخر
eBeforestr = [arraddres [0] ، '.' ، arraddres.slice (1). join ('')].
eBefore = +eBeforester ؛
إرجاع [الرقم (arraddres.join ('')) ، eBefore ، eafter] ؛
}
Stradd ('1234567890' ، '9876543210') ؛ // -> [1111111100 ، 1.11111111 ، 9]
الكود كما هو مذكور أعلاه ، أليس هذا بسيطًا جدًا؟