สำหรับตัวเลขที่มีขนาดใหญ่มากหรือน้อยมากสัญกรณ์ทางวิทยาศาสตร์สามารถใช้เพื่อแสดงค่าจุดลอยตัว การใช้สัญกรณ์ทางวิทยาศาสตร์ตัวเลขสามารถแสดงเป็นตัวเลขบวก E/E ตามด้วยมัลติ 10 ของ 10 เช่น:
การคัดลอกรหัสมีดังนี้:
var num1 = 3.125e7; // 31250000 var num2 = 3e-17; // 0.000000000000000000000000000000000000003
ในการเพิ่มหรือลบจำนวนมากโดยเฉพาะคุณสามารถใช้วิธีการของ String + Scientific Notation เพื่อดำเนินการวิธีการเช่น:
การคัดลอกรหัสมีดังนี้:
// พิจารณาเพียงจำนวนเต็มขนาดใหญ่และไม่พิจารณาฟังก์ชั่นทศนิยม stradd (snum1, snum2) {
/*เพิ่มตัวเลขเพื่อบันทึกเคสที่ตัวเลขสูงสุดคือเพิ่มเติม*//
var snum1 = ['0', snum1] .oin (''), snum2 = ['0', snum2] .oin ('');
/*เพิ่ม 0 ถึงสตริงตัวเลขสั้น*/
var len1 = snum1.length, len2 = snum2.length,
Zeroarr = function (len) {
var arr = อาร์เรย์ใหม่ (len), i = len;
ในขณะที่ (i-) {arr [i] = 0;}
กลับ arr;
-
if (len1> len2) {
var arrtemp = zeroarr (len1 - len2);
arrtemp.push (snum2),
snum2 = arrtemp.oin ('');
-
อื่นถ้า (len2> len1) {
var arrtemp = zeroarr (len2 - len1);
arrtemp.push (snum1),
snum1 = arrtemp.oin ('');
-
/*แปลงสตริงเป็นอาร์เรย์และเพิ่มด้วยตัวเลขที่สอดคล้องกัน*/
var arr1 = snum1.split (''), arr2 = snum2.split ('');
var arraddres = อาร์เรย์ใหม่ (arr1.length), i = arr1.length;
var Andone = 0, // ไม่ว่าจะเป็นการเพิ่มส่วนล่างคือ Cur1, Cur2, Curadd;
ในขณะที่ (i-) {
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 efter = arraddres.length - 1; // หลายส่วนหลังจาก e var eBofore, eBeforest = ''; // ส่วนทศนิยมก่อน E
if (keeplen <arraddres.length)
EBEFOREST = [arraddres [0], '.', arraddres.slice (1, keeplen) .Join ('')]. เข้าร่วม ('');
อื่น
EBEFOREST = [arraddres [0], '.', arraddres.slice (1) .join ('')]. เข้าร่วม ('');
Ebefore = +eBeforest;
return [number (arraddres.join ('')), eBofore, ebefter];
-
Stradd ('1234567890', '9876543210'); // -> [1111111100, 1.11111111, 9]
รหัสอยู่ข้างต้นมันไม่ง่ายมากเหรอ?