วิธีการปัดเศษตัวเลขของ JavaScript ลบ - จำนวนเต็มได้มากเกินไปจาก JavaScript? ไฟล์ย่อยจำนวนเต็ม js
Tse ช่วยให้คุณแก้ไขการกลับรายการ @ MarkElliot เพื่อแก้ไขตัวเลขติดลบ:
Vardiv = Math.trunc(y/x); var rem = y % x;
โปรดทราบว่าวิธีการทางคณิตศาสตร์อาจมีความสำคัญเหนือกว่าตัวดำเนินการระดับบิตที่มีกลิ่นเหม็นด้วยตัวเลขที่มากกว่า 2 31
JavaScript คำนวณบันทึกย่อยทางขวามือของจำนวนลบและส่วนที่เกินของจำนวนที่ไม่ใช่ตัวเลข ตามการคำนวณทางคณิตศาสตร์สำหรับตัวเลขเหล่านี้
FLOOR จะแสดงเป็น "จำนวนมากที่สุด น้อยกว่า ต่ำกว่า" ตามลำดับนี้:
- จำนวนบวก: FLOOR(X) = จำนวนส่วนของ X;
- จำนวนลบ: FLOOR (X) = ส่วนจำนวนเต็มของ X ลบ 1
REMAINDER ย่อมาจาก "สูญหาย" ฐานย่อย (เลขคณิตแบบยุคลิด) ถ้าเงินปันผลไม่ใช่จำนวนเต็ม ตัวประกอบก็ไม่ใช่จำนวนเต็มเช่นกัน จะไม่มีส่วนเกิน แต่ตัวประกอบเสียงต้องเป็นจำนวนเต็มด้วย (ถ้าคุ้มก็ถอดได้ , เอาส่วนเกินหรือโมดูลัสของตัวเลขด้วยการลอยตัว) เห็นได้ชัดว่าไม่ "มากเกินไป"
JavaScript นับทุกอย่างเมื่อเคลียร์โปรแกรมเมอร์ถูกตำหนิ แต่เราจะปกป้องเพื่อใส่อาหารที่ถูกต้อง (และผู้คนต้องถูกตำหนิ แต่เราจะปกป้องสิ่งที่ถูกกำหนดไว้!) tsіgo: "จำนวนเต็มของ ครั้งถ้าเป็นจำนวนเต็มของ YDE In อย่างอื่น" สำหรับจำนวนบวก จะเหมือนกันสำหรับทั้งสองอย่าง แต่ไม่ใช่สำหรับจำนวนลบ ดังนั้นจำนวนโพดิล (เงินปันผลต่อดิลนิก) จะน้อยกว่า -1 ตัวเลขที่ต่ำกว่า (ตัวหาร) "ไปที่ตัวอื่น" (เงินปันผล) กล่าวอีกนัยหนึ่ง FLOOR ปรากฏว่าถูกต้องสำหรับการหารจำนวนเต็มของจำนวนลบ แต่ Yarin ไม่ได้ถามถึงเรื่องนี้!
gammax ถูกต้อง รหัสนี้ทำงานโดยคำแนะนำของ Yarin ในทางกลับกัน สมุยล์มีเมตตา ฉันไม่อายวิชาคณิตศาสตร์ ฉันคิดว่า แต่ฉันเป็นบาชอฟ แล้วมันได้ผลจริง ๆ อะไร (ฉันเลยไม่ได้บอกว่าฉันไม่ได้บอกว่ามันเป็นดิลนิกของ ก้นโยคะ แต่ฉันแน่ใจว่ามันเป็น 3):
ส่วนเกิน = X% Y = -100% 3 = -1
GoesInto = (X - ส่วนที่เหลือ) / Y = (-100 - -1) / 3 = -99 / 3 = -33
เมื่อพูดถึงเรื่องนี้ ฉันได้ทดสอบโค้ดบน Firefox 27.0.1 ทดสอบแล้ว อย่างที่เป็น ด้วยตัวเลขบวกและลบ รวมทั้งค่าที่ไม่มีนัยสำคัญ ทั้งสำหรับเงินปันผลและสำหรับนักดำน้ำ ก้น:
100.34/3.57: เข้าสู่ = -28 ส่วนที่เหลือ = -0.3800000000000079
ดังนั้นฉันจึงบอกว่ามีปัญหากับความแม่นยำสูง แต่ฉันไม่เข้าใจ (ฉันไม่รู้ว่านี่เป็นปัญหากับ Firefox, Windows 7 หรือ FPU ของโปรเซสเซอร์ของฉัน) อย่างไรก็ตาม สำหรับอาหารของยาริน หากคุณใส่ตัวเลขเพียงหนึ่งตัวขึ้นไป รหัสแกมแม็กซ์ก็ถูกต้อง
คุณสามารถบิดฟังก์ชัน parseInt เพื่อรับผลลัพธ์ที่ถูกตัดทอน
ParseInt(a/b)
หากต้องการลบส่วนเกิน ให้ปรับแต่งโอเปอเรเตอร์ mod:
parseInt Mayutat deakі p_dvodn_ kamen_ ในแถวเพื่อให้พารามิเตอร์ radix ที่มีฐาน 10 เป็นเอกลักษณ์
ParseInt("09", 10)
ในบางกรณี การแสดงแถวของตัวเลขอาจเป็นสัญกรณ์ทางวิทยาศาสตร์ ซึ่ง parseInt จะนำไปสู่ผลลัพธ์ที่ไม่ถูกต้อง
ParseInt(100000000000000000000000000000000, 10) // 1e+32
การคลิกไส้ตะเกียงนี้จะให้ผลลัพธ์ 1
สามารถนับจำนวนด้านต่อโครเชต์ได้: Math.ceil (x/y)
เมื่อคุณแชร์คุณสมบัติทั้งสองนี้ คุณจะเอาชนะตัวดำเนินการระดับบิตได้:
ฟังก์ชันการส่งออก divideBy2(num) ( return ; ) ฟังก์ชันการส่งออก divideBy4(num) ( return ; ) ฟังก์ชันการส่งออก divideBy8(num) ( return ; )
(ก่อน - tse ส่วนตัว, เพื่อน - іnshe)
Tse zavzhdi จะลดลงเป็นศูนย์ ไม่เป็นไร มันแย่ไปแล้ว แต่มันบอกว่าที่นี่:
ฟังก์ชั่น intdiv(เงินปันผล, ตัวหาร) ( ตัวหาร = ตัวหาร - ตัวหาร % 1; ถ้า (ตัวหาร == 0) โยนข้อผิดพลาดใหม่ ("หารด้วยศูนย์"); เงินปันผล = เงินปันผล - เงินปันผล% 1; var rem = เงินปันผล% ตัวหาร; ผลตอบแทน ( ส่วนที่เหลือ: rem, ผลหาร: (เงินปันผล - rem) / ตัวหาร );
ฉันไม่ใช่ผู้เชี่ยวชาญเกี่ยวกับตัวดำเนินการระดับบิต แต่มีวิธีอื่นในการนับจำนวนเต็ม:
Varnum = ~~(a/b);
มันจะเป็นการดีที่จะแยกวิเคราะห์ i สำหรับตัวเลขติดลบ แต่ Math.floor() จะวนไปในทิศทางที่ไม่ถูกต้อง
สิ่งนี้ถูกต้องเช่นกัน:
Varnum = (a/b) >> 0;
Math.floor(operation) หมุนค่าที่ปัดเศษของการดำเนินการ
ตัวอย่างมื้อแรก:
วาร์ x = 5; แปรผัน = 10.4; varz = Math.floor(x + y); บันทึกคอนโซล (z);
คำนำหน้า:
ตัวอย่างการจัดหาที่ 2:
วาร์ x = 14; แปรผัน = 5; varz = Math.floor(x%y); บันทึกคอนโซล (x);
คำนำหน้า:
สำหรับจำนวนจริง y และตัวหารจริง x คำนวณตัวประกอบ (ผลหาร) และเศษที่เหลือ เช่น
ค่า Var = Math.floor(y/x); เศษที่เหลือ = y%x;
มักจะคำนวณเพื่อให้ผลลัพธ์ที่แสดงความแตกต่างระหว่างช่วงที่ต้องการ จึงต้องปรับปรุง JavaScript ปัดเศษจนถึงระดับการร้องเพลง
แล้วการปัดเศษตัวเลขล่ะ?
JavaScript ไม่ใช้ตัวเลขทั้งหมด ชาร์ดของค่าจะแสดงด้วยตัวเลขทศนิยม เศษส่วนจำนวนมากไม่สามารถแสดงด้วยตัวเลขที่มีเครื่องหมายจำนวนแรกตามหลัง Komi ได้ ดังนั้น JavaScript จึงสามารถสร้างผลลัพธ์ได้เมื่อวางเมาส์ไว้ด้านล่าง:
0.1 * 0.2; > 0.020000000000000004
ในทางปฏิบัติ เศษชิ้นส่วนมีค่าเท่ากันจากการตายถึง 2 quintillions คุณยังสามารถยึดติดกับผลลัพธ์เมื่อทำงานกับตัวเลข เพื่อแสดงค่าของสกุลเงิน จำนวนดอลลาร์ หรือไฟล์ เพื่อที่จำเป็นต้องเติบโต abo ให้เป็นสัญลักษณ์การร้องเพลงของ Komi
การปัดเศษทศนิยม
เพื่อให้ได้ตัวเลขหลักสิบ ให้ใช้เมธอด toFixed() หรือ toPrecision() กลิ่นเหม็นของความผิดใช้อาร์กิวเมนต์เดียวซึ่งกำหนดจำนวนที่มีนัยสำคัญและสัญญาณหลังโคมิซึ่งอาจรวมไว้ก่อนผลลัพธ์:
- มิฉะนั้นสำหรับ toFixed() อาร์กิวเมนต์จะไม่ถูกกำหนด ค่าเริ่มต้นจะเท่ากับ 0 จากนั้นจะไม่มีการลงนามหลังจาก Komi ค่าสูงสุดของอาร์กิวเมนต์คือ 20;
- ถ้า toPrecision() ไม่ได้ระบุอาร์กิวเมนต์ ตัวเลขจะไม่เปลี่ยนแปลง
var randNum = 6.25; randNum.toFixed(); > "6" Math.PI.toPrecision(1); > "3" var randNum = 87.335; randNum.toFixed(2); > "87.33" var randNum = 87.337; randNum.toPrecision(3); > "87.3"
บันทึก
І toFixed() และ toPrecision หมุนผลลัพธ์แถวที่ปัดเศษ ไม่ใช่ตัวเลข ซึ่งหมายความว่าการเพิ่มการปัดเศษเป็น randNum จะส่งผลให้มีการต่อแถวกัน ไม่ใช่ตัวเลขเดียว:
console.log (randNum + ปัดเศษ); > "6256"
หากคุณต้องการให้ผลลัพธ์ของ JavaScript ถูกปัดเศษเป็นร้อยที่ใกล้ที่สุด ให้ใช้ parseFloat() :
var randNum = 6.25; var ปัดเศษ = parseFloat(randNum.toFixed(1)); บันทึกคอนโซล(โค้งมน); > 6.3
toFixed() และ toPrecision() เป็นวิธีการพื้นฐานสำหรับการแก้ไขสัญญาณจำนวนมากหลังจาก Komi มีประโยชน์เมื่อทำงานกับตัวเลข วิธีทำเพนนีคนเดียว:
var wholeNum = 1 var dollarsCents = wholeNum.toFixed(2); console.log (ดอลลาร์เซนต์); > "1.00"
โปรดทราบว่าแม้ว่าจะมีอักขระมากกว่าในตัวเลข แต่ตัวล่างจะถูกระบุโดยพารามิเตอร์ความแม่นยำ จากนั้นผลลัพธ์จะปรากฏในรูปแบบทางวิทยาศาสตร์:
var num = 123.435 num.toPrecision(2); > "1.2e+2"
วิธีซ่อนการให้อภัยด้วยเศษส่วนสิบปัดเศษ
ในบางกรณี สูงสุดคงที่และแม่นยำ JavaScript ปัดเศษ 5 สำหรับ Bik ที่ต่ำกว่าและไม่เกินอันที่ใหญ่กว่า:
var numTest = 1.005; numTest.toFixed(2); > 1;
ผลลัพธ์ของก้นแหลมอาจเป็น 1.01 ไม่ใช่ 1 เนื่องจากจำเป็นต้องลบการอภัยโทษ ฉันขอแนะนำให้ใช้เลขชี้กำลัง:
ฟังก์ชัน round(value, decimals) ( return Number(Math.round(value+"e"+decimals)+"e-"+decimals); )
ศาสโตสุวรรณยา:
รอบ(1.005,2); > 1.01
ถ้าจำเป็นต้องแก้สูง โค้งมนล่าง ก็หาได้ที่ MDN.
โค้งมนเพื่อขอความช่วยเหลือ เอปไซลอน
วิธีทางเลือก JavaScript ปัดเศษเป็นสิบ buve แนะนำ ES6 ( เห็นได้ชัดว่าชอบ JavaScript 2015). « เครื่องเอปไซลอน» bezpechuzhu สมเหตุสมผลระหว่าง pohibki เมื่อตัวเลขสองตัวเท่ากับโคม่าลอย หากไม่มีการปัดเศษ การยืดผมให้ตรงอาจให้ผลลัพธ์ที่คล้ายคลึงกันดังต่อไปนี้:
0.1 + 0.2 === 0.3 > เท็จ
Math.EPSILON สามารถปรับแต่งได้โดยฟังก์ชันเพื่อให้ได้การจัดตำแหน่งที่ถูกต้อง:
ฟังก์ชัน epsEqu(x, y) ( ส่งคืน Math.abs(x - y)< Number.EPSILON * Math.max(Math.abs(x), Math.abs(y)); }
ฟังก์ชันรับสองอาร์กิวเมนต์: หนึ่งคือการคำนวณการคำนวณ อีกอันคือคะแนน (ปัดเศษ) ผลลัพธ์ เธอเปลี่ยนการจับคู่ของสองพารามิเตอร์:
epsEqu(0.1 + 0.2, 0.3) > จริง
เบราว์เซอร์ปัจจุบันทั้งหมดรองรับฟังก์ชันคณิตศาสตร์ ES6 นอกจากนี้ จำเป็นต้องรักษาความปลอดภัยการสนับสนุนในเบราว์เซอร์รุ่นเก่า และจำเป็นต้องแท็ก polyfiles
การสลายตัวของตัวเลขหลักสิบ
วิธีการทั้งหมดที่นำเสนอก่อนหน้านี้ win JavaScript ปัดเศษเป็นสิบ. ในการบวกเลขถึงสองเครื่องหมายหลังโคมิ ให้คูณ yogo ด้วย 100 คูณอีกครั้งแล้วลบผลลัพธ์ หารด้วย 100 จำเป็น:
ฟังก์ชันถูกตัดทอน (จำนวน) ( ส่งคืน Math.trunc (จำนวน * 100) / 100; ) ตัดทอน (3.1416) > 3.14
เท่าที่จำเป็นสำหรับคนบ้าบิ่น คุณสามารถเร่งความเร็วด้วยโอเปอเรเตอร์ระดับบิตได้:
ฟังก์ชันถูกตัดทอน (num, decimalPlaces) ( var numPowerConverter = Math.pow (10, decimalPlaces); return ~~(num * numPowerConverter)/numPowerConverter; )
ชัยชนะ:
var randInt = 35.874993; ตัดทอน (randInt,3); > 35.874
ปัดขึ้นเป็นตัวเลขที่ใกล้ที่สุด
Schob zdіysniti JavaScript ปัดเศษเป็นจำนวนเต็ม, Math.round() ชนะ:
Math.round(4.3) > 4 Math.round(4.5) > 5
ให้เกียรติโช” ค่าครึ่ง“ดังนั้น .5 จึงปัดเศษขึ้น
ปัดเศษลงเป็นจำนวนเต็มที่ใกล้เคียงที่สุด
หากคุณต้องการปัดเศษจักรยานที่เล็กกว่า ให้ปัดเศษวิธีการ Math.floor():
Math.floor(42.23); > 42 Math.floor(36.93); > 36
การปัดเศษ "ลง" สามารถเป็นค่าเดียวสำหรับตัวเลขทั้งหมด รวมทั้ง i สำหรับจำนวนลบด้วย เป็นไปได้ที่จะเปิดเผยเหมือนความมืดมนที่มีพื้นผิวจำนวนไม่สิ้นสุดรวมถึงด้านล่างสำหรับรากฐาน ( วิธีการแสดงตัวเลขติดลบ). คุณรู้ได้อย่างไรในลิฟต์ระหว่างพื้นผิวชั้นใต้ดิน 2 และ 3 ( ซึ่งให้ค่า -2.5), Math.floor จะทำให้คุณอยู่ด้านบนของ -3 :
Math.floor(-2.5); > -3
หากจำเป็นต้องตัดทอนสิ่งนี้ ให้ใช้ JavaScript Math เพื่อปัดเศษขึ้นโดยใช้ Math.trunc() ซึ่งทุกคนยอมรับ เบราว์เซอร์ปัจจุบัน(แหลมไครเมีย IE/ขอบ):
Math.trunc(-41.43); > -41
MDN ก็หวังเช่นกัน polyfill สามแถวเพื่อความปลอดภัยในการรองรับ Math.trunc ในเบราว์เซอร์รุ่นเก่าและ IE / Edge.
ปัดเศษขึ้นเป็นจำนวนเต็มที่ใกล้ที่สุด
หากคุณต้องการปัดเศษตัวเลขหลักสิบขึ้น ให้ใช้ Math.ceil วิธีนี้ยังสามารถแสดงเป็นลิฟต์ที่ไม่สิ้นสุดได้ด้วย: Math.ceil จะพาคุณ "ขึ้นเนิน" เสมอ ไม่ว่าตัวเลขจะเป็นค่าลบหรือค่าบวก:
Math.ceil(42.23); > 43 Math.ceil(36.93); > 37 Math.ceil(-36.93); -36
ปัดเศษเป็นทวีคูณที่ใกล้ที่สุด
จำเป็นต้องปัดเศษค่าเป็นทวีคูณที่ใกล้ที่สุดของ 5 สร้างฟังก์ชัน เช่น หารตัวเลขด้วย 5 ปัดเศษ แล้วคูณผลลัพธ์ด้วยค่าเดียวกัน:
ฟังก์ชัน roundTo5(num) ( return Math.round(num/5)*5; )
ชัยชนะ:
roundTo5(11); > 10
เนื่องจากจำเป็นสำหรับ JavaScript ที่จะต้องถูกปัดเศษเป็นสองอักขระ คุณสามารถส่งฟังก์ชันเป็นหมายเลข cob ได้เช่นเดียวกับหลายหลาก:
ฟังก์ชัน roundToMultiple(num, multiple) ( return Math.round(num/multiple)*multiple; )
ในการชนะฟังก์ชัน ให้เพิ่มตัวเลขที่ปัดเศษและทวีคูณให้กับสัปดาห์ її:
var initialNumber = 11; หลายตัวแปร = 10; roundToMultiple (หมายเลขเริ่มต้น, หลายรายการ); > 10;
หากต้องการปัดเศษค่าเฉพาะด้านที่ใหญ่กว่าหรือเล็กกว่า ให้แทนที่ฟังก์ชันกลมด้วยเพดานหรือพื้น
ผูกพันกับช่วง
บางครั้งจำเป็นต้องหาค่าของ x เนื่องจากอาจพบได้ที่ขอบสนามร้องเพลง ตัวอย่างเช่น คุณต้องการค่าตั้งแต่ 1 ถึง 100 แต่เรามีค่า 123 ในการแก้ไข คุณสามารถใช้ min() ( เปลี่ยนเลขให้น้อยที่สุด) และสูงสุด ( เปลี่ยนจำนวนสูงสุดที่อนุญาต).
ชัยชนะ:
var lowBound = 1; varhighBound = 100; varnumInput = 123; var หนีบ = Math.max(lowBound, Math.min(numInput, highBound)); บันทึกคอนโซล(หนีบ); > 100;
คุณสามารถสร้างฟังก์ชันโดยขยายคลาส Number
บ่อยกว่านั้น JavaScript จะไม่ให้ผลลัพธ์แบบเดียวกับที่เราต้องการ เข้าใจได้ว่าเราทำงานกับตัวเลขได้ ไม่ว่าจะเป็น - ปัดเศษด้านที่ใหญ่ขึ้น กำหนดช่วง เปลี่ยนตัวเลขเป็นจำนวนที่แยกได้ของเครื่องหมายหลังโคมิ ให้ทุกอย่างอยู่ในมุมมองที่คุณต้องการทำงานกับตัวเลขนี้ .ต้องการปัดเศษมากขึ้น?
ลักษณะที่สำคัญที่สุดอย่างหนึ่งของ JavaScript คือส่วนที่ไม่ใช้ตัวเลขทั้งหมด แต่เราทำงานกับตัวเลขทศนิยม ที่ถูกกล่าวว่าเนื่องจากความจริงที่ว่าค่า shot จำนวนมากไม่สามารถแสดงด้วยจำนวนอักขระสุดท้ายหลังจาก Komi ใน JavaScript เราสามารถรับผลลัพธ์ต่อไปนี้:0.1 * 0.2;
> 0.020000000000000004
0.3 - 0.1
> 0.19999999999999998
เพื่อวัตถุประสงค์ในทางปฏิบัติ ความไม่ถูกต้องนี้ไม่มีความหมายที่สมเหตุสมผล ในความเห็นของเรา เรากำลังพูดถึงการให้อภัยในควอเตอร์ที่สี่ซึ่งสามารถถอดรหัสได้ เราสามารถให้ผลลัพธ์ที่ยอดเยี่ยมสองสามอย่างและเมื่อทำงานกับตัวเลข ค่าสกุลเงิน yaki ไฟล์vіdsotkіvหรือrozmіrіv เพื่อแก้ไขความไม่ถูกต้องเหล่านี้ เราแค่ต้องปัดเศษผลลัพธ์ แค่ตั้งค่าความแม่นยำที่สิบก็เพียงพอแล้ว
การปัดเศษตัวเลขอาจ ศาสโตสุวรรณยา ปฏิบัติเราสามารถจัดการตัวเลขในช่วงร้องเพลงได้ ตัวอย่างเช่น เราต้องการปัดเศษค่าให้เป็นจำนวนเต็มที่ใกล้เคียงที่สุด ไม่ใช่แค่ส่วนที่สิบเท่านั้น
การปัดเศษทศนิยม
หากต้องการหาตัวเลขที่สิบ ให้ใช้ tofixed หรือวิธี toPrecision ทำให้พวกเขาขุ่นเคืองพวกเขายอมรับอาร์กิวเมนต์เดียวซึ่งหมายความว่าจำนวนหลักที่มีนัยสำคัญ (นั่นคือสาเหตุที่จำนวนหลักมีนัยสำคัญซึ่งได้รับชัยชนะในจำนวน) หรือเครื่องหมายหลังโคมิ (ตัวเลขหลังจุดที่สิบ) คือ มีความผิดในการรวมผล:- หากอาร์กิวเมนต์ไม่ใช่ค่าสำหรับ toFixed() ค่าเริ่มต้นคือศูนย์ ซึ่งหมายความว่า 0 อักขระหลัง comi อาร์กิวเมนต์จะสูงสุด ซึ่งคือ 20
- เป็นอาร์กิวเมนต์ของการไม่มีงานสำหรับการตรวจสอบ ตัวเลขจะไม่มีการยืม
สองวิธี toFixed() และ toPrecision() หมุนการแสดงแถวของผลลัพธ์ ไม่ใช่ตัวเลข Tse หมายความว่าเมื่อรวมค่าที่ปัดเศษของ randNum การต่อแถวจะถูกต่อกัน ไม่ใช่ผลรวมของตัวเลข:
ให้ randNum = 6.25; ให้ปัดเศษ = randNum.toFixed(); // "6" console.log (randNum + ปัดเศษ); > "6256"
หากคุณต้องการให้ผลลัพธ์เป็นประเภทข้อมูลตัวเลข คุณจะต้องเรียกใช้ parseFloat:
ให้ randNum = 6.25; ให้ปัดเศษ = parseFloat(randNum.toFixed(1)); บันทึกคอนโซล(โค้งมน); > 6.3
ให้ความเคารพ ที่ค่าของ 5 ถูกปัดเศษ สำหรับ vipadkiv เหงานิดหน่อย
วิธีการ toFixed() และ toPrecision() ควรได้รับการแก้ไข เพราะพวกเขาไม่เพียงแต่มองเห็นส่วนที่ยิง แต่ยังเพิ่มสัญญาณหลัง Komi ซึ่งสะดวกสำหรับการทำงานกับสกุลเงินเป็นเวลาหนึ่งชั่วโมง:
ให้ wholeNum = 1 ให้ dollarCents = wholeNum.toFixed (2); console.log (ดอลลาร์เซนต์); > "1.00"
Warto เคารพว่าประสบการณ์จะให้ผลลัพธ์ในรูปแบบเลขชี้กำลัง เนื่องจากจำนวนเต็มมากกว่า ลดความแม่นยำลง:
ให้ num = 123.435 num.toPrecision(2); > "1.2e+2"
วิธีแก้คำขอโทษที่ปัดเศษทศนิยม
ในบางกรณี ค่าคงที่และ toPrecision จะปัดเศษค่า 5 สำหรับด้านที่เล็กกว่า และสำหรับค่าที่ใหญ่กว่า:ให้ numTest = 1005; numTest.toFixed(2); > "1.00"
ผลลัพธ์ของ rozrahunka นั้นน่าตำหนิสำหรับจดหมาย 1.01 มากกว่า และไม่ใช่ 1 หากคุณต้องการซ่อนการให้อภัยที่คล้ายกัน เราสามารถชนะการตัดสินใจที่เสนอโดย Jack L Moore เช่นเดียวกับเลขชี้กำลังของ Vikorist สำหรับ rozrahunka:
ฟังก์ชัน round(value, decimals) ( return Number(Math.round(value+"e"+decimals)+"e-"+decimals); )
ตอนนี้:
รอบ(1.005,2); > 1.01
หากคุณต้องการโซลูชันที่ใหญ่กว่า โซลูชันที่ต่ำกว่า คุณสามารถไปที่ MDN
เครื่องปัดเศษเอปซิลอน
วิธีการอื่นสำหรับการปัดเศษทศนิยมถูกนำมาใช้ใน ES6 การปัดเศษเอปซิลอนของเครื่องช่วยให้เกิดระยะห่างที่เหมาะสมระหว่างข้อผิดพลาดเมื่อตัวเลขสองตัวเท่ากับจุดทศนิยม หากไม่มีการปัดเศษ การยืดผมให้ตรงอาจให้ผลลัพธ์ที่คล้ายคลึงกันดังต่อไปนี้:0.1 + 0.2 === 0.3 > เท็จ
เราใช้ Math.EPSILON สำหรับฟังก์ชันของเราเพื่อให้ได้การจัดตำแหน่งที่ถูกต้อง:
ฟังก์ชัน epsEqu(x, y) ( ส่งคืน Math.abs(x - y)< Number.EPSILON * Math.max(Math.abs(x), Math.abs(y));
}
ฟังก์ชันนี้ยอมรับสองอาร์กิวเมนต์: อันแรกคือรันสตรีมมิ่ง อีกอันคือผลการปรับขนาด เธอเปลี่ยนเป็นสองคนเท่ากับ:
EpsEqu(0.1 + 0.2, 0.3) > จริง
เบราว์เซอร์ปัจจุบันทั้งหมดรองรับฟังก์ชันคณิตศาสตร์ ES6 แล้ว หรือหากคุณต้องการรองรับในเบราว์เซอร์เช่น IE 11 ให้ปรับแต่ง polyfills
การตรวจสอบปืนลูกซอง
วิธีการทั้งหมดที่ได้รับการแนะนำสามารถปัดเศษขึ้นเป็นสิบ เพื่อให้ได้ตัวเลขที่สูงถึงสองหลักหลังโคมิ คุณต้องคูณ yogo ด้วย 100 แล้วลบผลลัพธ์หารด้วย 100:ฟังก์ชันถูกตัดทอน (num) ( return Math.trunc(num * 100) / 100; ) ตัดทอน (3.1416) > 3.14
หากคุณต้องการใช้วิธีนี้สำหรับสัญญาณจำนวนเท่ากันหลังจาก Komi คุณสามารถเพิ่มความเร็วรายการระดับบิตต่อไปนี้:
ฟังก์ชันถูกตัดทอน (num, decimalPlaces) ( ให้ numPowerConverter = Math.pow (10, decimalPlaces); return ~~(num * numPowerConverter)/numPowerConverter; )
ตอนนี้:
ให้ randInt = 35.874993; ตัดทอน (randInt,3); > 35.874
ปัดขึ้นเป็นตัวเลขที่ใกล้ที่สุด
ในการปัดเศษตัวเลขที่สิบให้เป็นตัวเลขที่ใกล้ที่สุดในด้านที่สูงกว่าหรือด้านล่าง ขึ้นอยู่กับว่าตัวใดใกล้ที่สุด ให้ใช้ Math.round():Math.round(4.3) > 4 Math.round(4.5) > 5
จำไว้ว่า "ค่าครึ่งหนึ่ง" 0.5 จะถูกปัดขึ้นเป็นด้านใหญ่ตามกฎของคณิตศาสตร์
ปัดเศษลงเป็นจำนวนเต็มที่ใกล้ที่สุด
หากคุณต้องการปัดเศษ y เป็นจำนวนที่น้อยกว่าอย่างถาวร ให้ปัดเศษ Math.floor:Math.floor(42.23); > 42 Math.floor(36.93); > 36
โปรดทราบว่าการปัดเศษลงนั้นถูกต้องสำหรับตัวเลขทั้งหมด และตัวเลขนั้นสำหรับตัวเลขติดลบ ขจัดความมืดออกจากพื้นผิวจำนวนนับไม่ถ้วน รวมทั้งพื้นผิวของระดับล่าง (ซึ่งแสดงถึงจำนวนลบ) หากคุณอยู่ในลิฟต์ที่ชั้นล่างระหว่าง 2 ถึง 3 (ซึ่งก็คือ -2.5) Math.floor จะพาคุณไปที่ -3:
Math.floor(-2.5); > -3
นอกจากนี้ หากคุณต้องการหลีกเลี่ยงสถานการณ์นี้ ให้แท็ก Math.trunc ซึ่งรองรับโดยเบราว์เซอร์สมัยใหม่ทั้งหมด (IE/Edge cream):
Math.trunc(-41.43); > -41
บน MDN คุณจะพบ polyfill ที่จะให้การสนับสนุน Math.trunc ในเบราว์เซอร์ IE/Edge
การปัดเศษขึ้นเป็นจำนวนเต็มที่ใกล้ที่สุด
ในอีกด้านหนึ่ง หากคุณต้องการปัดเศษด้านยาว ให้ใช้ Math.ceil ฉันรู้ มันอาจจะเป็นการยกระดับที่ไม่สิ้นสุด: Math.ceil ขึ้นเนินเสมอ ไม่ว่าตัวเลขจะเป็นค่าลบหรือค่าลบ:Math.ceil(42.23); > 43 Math.ceil(36.93); > 37 Math.ceil(-36.93); > -36
ปัดเศษเป็นจำนวนที่ต้องการสูงสุด/ต่ำสุด
หากเราต้องการปัดเศษขึ้นเป็นทวีคูณที่ใกล้ที่สุดของ 5 วิธีที่ง่ายที่สุดในการสร้างฟังก์ชันคือการหารตัวเลขด้วย 5 ปัดขึ้นแล้วคูณด้วยจำนวนนั้น:ฟังก์ชัน roundTo5(num) ( return Math.round(num/5)*5; )
ตอนนี้:
RoundTo5(11); > 10
หากคุณต้องการปัดเศษขึ้นเป็นทวีคูณของมูลค่าของคุณ เราสามารถชนะได้มากกว่า ฟังก์ชั่นกลาง, ส่งต่อไปยังค่า cob ฉันทวีคูณ:
ฟังก์ชัน roundToMultiple(num, multiple) ( return Math.round(num/multiple)*multiple; )
ตอนนี้:
ให้ initialNumber = 11; ให้ทวีคูณ = 10; roundToMultiple (หมายเลขเริ่มต้น, หลายรายการ); > 10;
การแก้ไขตัวเลขในช่วง
vipadkіvมั่งคั่งถ้าเราต้องการหาค่าของ x ซึ่งอยู่ในช่วง ตัวอย่างเช่น เราอาจต้องการค่าตั้งแต่ 1 ถึง 100 แต่ด้วยเหตุนี้ เราจึงเอาค่า 123 ออกไป เพื่อแก้ไข เราสามารถชนะขั้นต่ำ (เปลี่ยนค่าน้อยที่สุดของชุดตัวเลข) และสูงสุด (เปลี่ยน ตัวคูณมากที่สุด) สต็อกของเรามีตั้งแต่ 1 ถึง 100:ให้ lowBound = 1; ให้ highBound = 100; ให้ numInput = 123; ปล่อยให้หนีบ = Math.max(lowBound, Math.min(numInput, highBound)); บันทึกคอนโซล(หนีบ); > 100;
ฉันรู้ เราสามารถทบทวนการดำเนินการและรวมทุกอย่างไว้ในฟังก์ชัน เพื่อให้เราสามารถแก้ปัญหาได้อย่างรวดเร็ว โดยเสนอให้ Daniel X. Moore :
Number.prototype.clamp = function(min, max) ( return Math.min(Math.max(this, min), max); ); ฟังก์ชัน
ตอนนี้:
NumInput.clamp (lowBound, highBound); > 100;
การปัดเศษแบบเกาส์
การปัดเศษแบบเกาส์เซียนหรือที่เรียกว่าการปัดเศษของธนาคารนั้นขึ้นอยู่กับข้อเท็จจริงที่ว่าการปัดเศษสำหรับกรณีประเภทนี้จะถูกนำไปที่คู่ที่ใกล้ที่สุด วิธีการปัดเศษนี้ทำงานโดยไม่มีข้อผิดพลาดทางสถิติ ทางออกที่ดีกว่า Boolo เสนอโดย Tim Down:ฟังก์ชัน gaussRound(num, decimalPlaces) ( ให้ d = decimalPlaces || 0, m = Math.pow(10, d), n = +(d ? num * m: num).toFixed(8), i = Math.floor (n), f = n - i, e = 1e-8, r = (f > 0.5 - e && f< 0.5 + e) ?
((i % 2 == 0) ? i: i + 1) : Math.round(n);
return d ? r / m: r;
}
ตอนนี้:
เกาส์รอบ (2.5) > 2 เกาส์รอบ (3.5) > 4 เกาส์รอบ (2.57,1) > 2.6
เครื่องหมายทศนิยมสำหรับ CSS:
ชาร์ด JavaScript มักใช้เพื่อสร้างการแมปตำแหน่งขององค์ประกอบ HTML ใหม่ คุณสามารถระบุค่าที่จะเป็นเมื่อเราสร้างค่ามากมายสำหรับองค์ประกอบของเรา:
#box (กว้าง: 63.667731993px; )
ข่าวดีก็คือเบราว์เซอร์ในปัจจุบันสามารถคาดเดาค่าต่างๆ ได้มากมายในรูปแบบบล็อก ซึ่งรวมถึงเปอร์เซ็นต์ของหน่วยพิกเซลในโลกด้วย
การเรียงลำดับ
บ่อยครั้งที่เราต้องแยกแยะองค์ประกอบบางอย่างออก ตัวอย่างเช่น เรามีบันทึกเกมมากมาย ในขณะที่กลิ่นเหม็นก็คือการตำหนิการจัดระเบียบการเปลี่ยนแปลงในลำดับของแรงโน้มถ่วง น่าเสียดายที่วิธีการ sort() แบบมาตรฐานอาจดูแปลกไปบ้าง: ใช้งานได้ดีกับคำภาษาอังกฤษที่มักใช้ แต่ก็สามารถแยกย่อยออกได้เมื่อใช้ตัวเลข อักขระเฉพาะ หรือคำที่เป็นตัวพิมพ์ใหญ่การเรียงลำดับตัวอักษร
จะดีกว่าถ้าการจัดเรียงอาร์เรย์ตามตัวอักษรเป็นงานที่ง่ายที่สุด:ให้ผลไม้ = ["บัตเตอร์นัตสควอช", "แอปริคอท", "แคนตาลูป"]; ประเภทผลไม้(); > "แอปริคอท", "บัตเตอร์นัทสควอช", "แคนตาลูป"]
ทิมไม่ได้น้อยหน้าฉันติดอยู่กับปัญหาเนื่องจากมีองค์ประกอบเดียวเท่านั้นที่อยู่ในทะเบียนบน:
ให้ผลไม้ = ["บัตเตอร์นัตสควอช", "แอปริคอท", "แคนตาโลป"]; ประเภทผลไม้(); > "แคนตาลูป", "แอปริคอท", "บัตเตอร์นัทสควอช"]
นี่เป็นเพราะความจริงที่ว่า สำหรับการล็อก ตัวเรียงลำดับจะปรับอักขระตัวแรกของการแทนค่าใน Unicode ให้เท่ากัน Unicode เป็นรหัสเฉพาะสำหรับตัวละครใดๆ ก็ตาม เป็นอิสระจากแพลตฟอร์ม เป็นอิสระจากโปรแกรม เป็นอิสระจากภาพยนตร์ ตัวอย่างเช่น เช่นเดียวกับในตารางรหัส อักขระ "a" สามารถมีค่า U+0061 (ในระบบที่สิบหก 0x61) ดังนั้นอักขระ "C" สามารถมีรหัส U+0043 (0x43) แล้วแต่จำนวนใดจะถึงก่อน ตาราง Unicode อักขระตัวล่าง "a"
ในการจัดเรียงอาร์เรย์ซึ่งสามารถเปลี่ยนการลงทะเบียนของตัวอักษรตัวแรก เราจำเป็นต้องแปลงองค์ประกอบทั้งหมดของเวลาเป็นตัวพิมพ์เล็ก หรือกำหนดลำดับการจัดเรียงสำหรับวิธีใช้ localeCompare () วิธีการที่มีอาร์กิวเมนต์บางตัว ตามกฎแล้ว ในกรณีเช่นนี้ เป็นการดีกว่าที่จะสร้างฟังก์ชันสำหรับมัสสุบาทาราซิส:
ฟังก์ชัน alphaSort(arr) ( arr.sort(function (a, b) ( return a.localeCompare(b, "en", ("sensitivity": "base")); ) ) let fruit = ["butternut squash "แอปริคอท", "แคนตาลูป"]; alphaSort(ผลไม้) >
หากคุณต้องการจัดเรียงอาร์เรย์ของการเรียงลำดับตามตัวอักษรย้อนกลับ เพียงแค่เปลี่ยนตำแหน่ง a และ b ของฟังก์ชัน:
ฟังก์ชัน alphaSort(arr) ( arr.sort(function (a, b) ( return b.localeCompare(a, "en", ("sensitivity": "base")); ) ) let fruit = ["butternut squash "แอปริคอท", "แคนตาลูป"]; alphaSort(ผลไม้) > ["แคนตาลูป", "บัตเตอร์นัทสควอช", "แอปริคอท"]
ที่นี่คุณต้องจำไว้ว่า localeCompare จับคู่กับอาร์กิวเมนต์ คุณต้องจำไว้ว่า IE11+ ได้รับการสนับสนุน สำหรับ IE เวอร์ชันเก่า เราสามารถจับคู่ได้โดยไม่ต้องมีอาร์กิวเมนต์ และตัวพิมพ์เล็ก:
ฟังก์ชัน caseSort(arr) ( arr.sort(function (a, b) ( return a.toLowerCase().localeCompare(b.toLowerCase()); )); ) let fruit = ["butternut squash", "apricot", "แคนตาลูป"]; caseSort(ผลไม้) > ["แอปริคอท", "บัตเตอร์นัทสควอช", "แคนตาลูป"]
การเรียงลำดับตัวเลข
เช่นเดียวกัน มันไม่คุ้มเสียทีเดียว ซึ่งเราได้พูดถึงสถิติเกมต่างๆ มากมาย สมาชิก 3 คน อาร์เรย์ตัวเลขการเรียงลำดับนั้นสมบูรณ์แบบ แต่ในบางจุด ผลลัพธ์อาจไม่สามารถถ่ายโอนได้:ให้คะแนนสูง = ; เรียงลำดับ(); >
ทางด้านขวา วิธีการ sort() จะตั้งค่าการจัดตำแหน่งศัพท์: ซึ่งหมายความว่าตัวเลขจะถูกจัดเรียงใหม่เป็นแถวและการจัดตำแหน่งจะทำใหม่โดยการวางอักขระตัวแรกของแถวนั้นในลำดับอักขระในตาราง Unicode ดังนั้น เราจำเป็นต้องกำหนดลำดับการจัดเรียงของเราอีกครั้ง:
ให้คะแนนสูง = ; highScores.sort(ฟังก์ชัน(a,b) ( คืนค่า a - b; )); >
ฉันรู้ สำหรับการเรียงลำดับตัวเลขในลำดับที่กลับกัน ให้จำตำแหน่ง a และ b ของฟังก์ชัน
การจัดเรียงโครงสร้างเหมือน JSON
เนื่องจากเรามีโครงสร้างข้อมูลที่เหมือน JSON จึงแสดงเป็นอาร์เรย์ของบันทึกเกม:Let scores = [ ( "name": "Daniel", "score": 21768 ), ( "name": "Michael", "score": 33579 ), ( "name": "Alison", "score": 38395 )];
ใน ES6+ คุณสามารถหมุนฟังก์ชันลูกศรได้:
Scores.sort((a, b) => b.score - a.score));
สำหรับเบราว์เซอร์รุ่นเก่า คุณไม่สามารถนึกถึงเคล็ดลับดังกล่าวได้:
Scores.sort(ฟังก์ชัน(a, b) (ส่งคืน a.score - b.score));
เช่นเดียวกับ bachite การแยกแยะ JavaScript นั้นไม่ชัดเจนนัก ฉันเดาว่าคุณจะทำอะไรได้บ้างเพื่อทำให้ชีวิตง่ายขึ้น
ทำงานด้วยฟังก์ชั่นเดียวกัน
Zvedennija in stupіn - การดำเนินการที่แสดงเป็นผลมาจากการคูณจำนวนธรรมชาติในตัวมันเอง รากที่สองของตัวเลข a คือตัวเลขที่ให้ a เมื่อยกกำลังสอง ด้วยฟังก์ชันเหล่านี้ เราสามารถใช้ชีวิตประจำวันได้อย่างต่อเนื่องเป็นเวลาหนึ่งชั่วโมงของบทเรียนคณิตศาสตร์ คำนวณพื้นที่เป็นเวลาหนึ่งชั่วโมง และสำหรับการสร้างแบบจำลองทางกายภาพฟังก์ชันสถานะ JavaScript แสดงเป็น Math.pow() ในมาตรฐานการแทนค่า ES7 ใหม่ โอเปอเรเตอร์ใหม่ zvedennya ที่เท้า - "* *"
Zvedennya ที่เท้า
ในการแปลงตัวเลขเป็นกำลังที่ n ให้บิดฟังก์ชัน Math.pow() อาร์กิวเมนต์แรกคือตัวเลข ราวกับว่าจะถูกแปลงเป็นกำลัง อาร์กิวเมนต์อื่นจะเป็นตัวบ่งชี้ขั้นตอน:Math.pow(3,2) > 9
รูปแบบการเขียนนี้หมายถึง 3 ในช่องสี่เหลี่ยมหรือ 3 × 3 ซึ่งนำไปสู่ผลลัพธ์ 9 คุณสามารถชี้ก้นได้อย่างชัดเจน:
Math.pow(5,3); > 125
Tobto, 5 สำหรับลูกบาศก์หรือ 5 × 5 × 5 ราคาคือ 125
ECMAScript 7 - JavaScript เวอร์ชันใหม่กำลังจะมา โดยหลักการแล้ว เราสามารถใช้ตัวดำเนินการเฟสใหม่ได้ - * * รูปแบบสัญกรณ์นี้จะดีกว่า:
3 ** 2
> 9
ในขณะนี้ การสนับสนุนของผู้ให้บริการรายนี้ถูกตัดออกไป ดังนั้นจึงไม่แนะนำให้สั่น
ฟังก์ชันขั้นตอนมีประโยชน์ในสถานการณ์ต่างๆ ตัวอย่างง่ายๆ การนับจำนวนวินาทีต่อปี: Math.pow (60.2)
รากที่สองและลูกบาศก์
Math.sqrt() และ Math.cbrt() เป็นฟังก์ชันทางเลือกของ Math.pow() เพื่อเป็นการเตือนความจำ รากที่สองของคลังสินค้า a คือตัวเลข โดยให้ pіd h zvedennya กำลังสองMath.sqrt(9) > 3
ในเวลาเดียวกัน รูทคิวบ์จากตัวเลข a คือตัวเลขที่ให้ a เมื่อสร้างคิวบ์
Math.cbrt(125) > 5
Math.cbrt() เพิ่งเปิดตัวในข้อกำหนด JavaScript และพบได้น้อยกว่าในเบราว์เซอร์สมัยใหม่: Chrome 38+, Firefox และ Opera 25+ และ Safari 7.1+ จำอะไรได้บ้าง Internet Explorerในรายการนี้ แต่ใน MDN คุณจะพบโพลีฟิล
นำมาใช้
แน่นอน เราไม่สามารถชนะได้ค่าเดียวในฟังก์ชันใดฟังก์ชันหนึ่งเหล่านี้:Math.pow(1.25, 2); > 1.5625 Math.cbrt(56.57) > 3.8387991760286138
เพื่อฟื้นฟูความเคารพการปฏิบัติทั้งหมดคืออะไรและในกรณีที่มีค่าลบทั้งหมดของอาร์กิวเมนต์:
Math.pow(-5,2) > 25 Math.pow(10,-2) > 0.01
ทิมไม่น้อยเพราะรากที่สอง tse ไม่ใช่ pracyuvatime:
Math.sqrt(-9) > น่าน
จากการวิเคราะห์ทางคณิตศาสตร์ เรารู้ว่าภายใต้จำนวนที่ชัดเจน เราสามารถเข้าใจรากที่สองของจำนวนลบได้ คุณยังสามารถนำเทคนิคหุ่นยนต์อีกหนึ่งตัวที่มีจำนวนเชิงซ้อนขึ้นมาได้ แต่ก็ยังเป็นอีกเรื่องหนึ่ง
คุณสามารถลองใช้ค่าเศษส่วนใน Math.pow() เพื่อค้นหารากที่สองและสามของตัวเลข รากที่สองของตัวบ่งชี้ผู้ชนะคือ 0.5:
Math.pow(5, 0.5); // = Math.sqrt(5) = 5 ** (1/2) > 2.23606797749979
อย่างไรก็ตาม การใช้พริมจุดทศนิยม คุณไม่สามารถสรุปผลลัพธ์ที่ถูกต้องได้อย่างแม่นยำ:
Math.pow(2.23606797749979.2) > 5.000000000000001
ในสถานการณ์เช่นนี้ คุณอาจจะต้องกรอกเครื่องหมายตัวเลข หรือปัดเศษเป็นค่าใดๆ
ด้วยเหตุผลที่ไม่สมเหตุสมผลบางประการ JavaScript ทำให้ฟังก์ชัน Math.pow() สับสนกับ Math.exp() ซึ่งเป็นฟังก์ชันเลขชี้กำลังสำหรับตัวเลขอย่างแท้จริง บันทึก: ภาษาอังกฤษ"ตัวบ่งชี้องศา" ถูกแปลเป็น "เลขชี้กำลัง" ดังนั้นจึงควรพิจารณาภาษาอังกฤษ ต้องการสร้างและชื่ออื่นของตัวบ่งชี้ระดับ เช่น ดัชนี กำลัง
ค่าคงที่ทางคณิตศาสตร์
หุ่นยนต์ที่มี JavaScript ทางคณิตศาสตร์นั้นโล่งใจสำหรับค่าคงที่ต้นทุนต่ำ ค่าคงที่ Qi єการครอบงำของวัตถุคณิตศาสตร์ Warto ให้ความเคารพกับค่าคงที่ที่เขียนด้วยตัวพิมพ์ใหญ่ ไม่ใช่สัญลักษณ์ CamelCaseMath.abs, parseInt, parseFloat
การทำงานกับตัวเลขใน JavaScript นั้นสามารถพับเก็บได้อย่างมากมาย แต่ก็ใช้งานไม่ได้ ค่าของ Otrimani ไม่ได้ใช้ในช่วงกลางของช่วงการให้คะแนนเสมอไปและบางครั้งผลลัพธ์อาจดูเหมือนกับคะแนนที่ได้Math.abs()
วิธี Math.abs() จะหมุนค่าสัมบูรณ์ของตัวเลข ซึ่งจะบอกเราถึงฟังก์ชันทางคณิตศาสตร์ที่คล้ายคลึงกันของโมดูลัสของตัวเลข aให้ newVal = -57.64; Math.abs(newVal); > 57.64
Math.abs(0) จะกลายเป็นศูนย์เสมอ แต่ถ้าคุณใส่เครื่องหมายลบหน้าฟังก์ชัน Math.abs(NUM) เราจะมีค่าลบเสมอ
Math.abs(0); > -0
parseInt()
เรารู้ว่า JavaScript ฉลาด โดย "15" เป็นตัวเลข ไม่ใช่ตัวเลข i ตัวอย่างเช่น เมื่อแยกวิเคราะห์ CSS ด้วย JavaScript หรือหากเราใช้ค่าจากอาร์เรย์ที่ไม่ได้เตรียมไว้ ผลลัพธ์ของเราอาจไม่สอดคล้องกัน เราสามารถเข้าแถวเพื่อป้อน การแสดงเช่น "17px" และสำหรับเรา มันไม่ใช่เรื่องใหญ่ โภชนาการขึ้นอยู่กับวิธีการสร้างแถวใหม่ตามความหมายที่แท้จริงและบิดโยคะในดอกกุหลาบที่อยู่ห่างไกลไวยากรณ์: parseInt(สตริง, ฐาน);
ฟังก์ชัน parseInt จะแปลงอาร์กิวเมนต์ที่ส่งผ่านครั้งแรกไปเป็นประเภทแถว ตีความและเปลี่ยนเป็นตัวเลขหรือค่า NaN ผลลัพธ์ (ไม่ใช่ NaN) เป็นจำนวนเต็มและอาร์กิวเมนต์แรก (สตริง) ซึ่งถูกมองว่าเป็นตัวเลขในค่าระบบตัวเลข (radix) ตัวอย่างเช่น 10 คะแนนที่จะเปลี่ยนจากตัวเลขที่สิบ 8 - สิบแปด 16 - สิบหกเป็นต้น เนื่องจากฐานมีค่ามากกว่า 10 ดังนั้นสำหรับความหมายของตัวเลขที่มากกว่า 9 จะใช้ตัวอักษร ตัวอย่างเช่น สำหรับ สิบหกตัวเลข(ฐาน 16) ตัวอักษรจาก A ถึง F เป็นอักษรแทน
ลองมาดูที่ก้นของหุ่นยนต์ที่มีการครอบงำ CSS, de, ดูเหมือนว่าจิตใจเราสามารถใช้ความหมายต่อไปนี้:
ให้ elem = document.body; ให้ centerPoint = window.getComputedStyle(elem).transformOrigin; > "454px 2087.19px"
เราสามารถแบ่งค่าของการทดสอบ:
ให้ centers = centerPoint.split(" "); > ["454px", "2087.19px"]
อย่างไรก็ตาม องค์ประกอบของผิวยังอยู่ในระเบียบ เราสามารถกำจัดมันได้โดยการปิดกั้นการทำงานของเรา:
ให้ centerX = parseInt (ศูนย์ 10); > 454 ให้ centerY = parseInt (ศูนย์, 10); > 2087
ตามความเป็นจริง อาร์กิวเมนต์อื่นจะแนะนำระบบของตัวเลข ซึ่งจะมีการแปลงตัวเลข ซึ่งพารามิเตอร์ใดไม่มีผลผูกพัน แต่ขอแนะนำให้สั่นด้วย เนื่องจากคุณไม่ทราบว่าคุณต้องการป้อนแถวใด
parseFloat()
ฉันจะพูดมากกว่านี้ คุณร้องเพลงได้ไพเราะว่า parseInt กำลังหยิบส่วนเล็ก ๆ ขึ้นมา ในกรณีของเรา parseFloat ทำงานกับตัวเลขทศนิยม อย่างไรก็ตาม ฉันรู้ว่าเราสามารถทำให้มันแย่ลงได้เมื่อวิเคราะห์ CSS และงานอื่นๆ โดยเฉพาะอย่างยิ่งเมื่อทำงานกับจุดลอยตัวใน windowsไวยากรณ์: parseFloat(สตริง)
LetFP = "33.33333%"; console.log(parseFloat(FP)); > 33.33333
เพื่อให้แน่ใจว่า ไวยากรณ์ของ parseFloat ไม่สามารถโต้แย้งได้
เป็นที่เข้าใจได้ว่า parseInt() และ parseFloat() เป็นฟังก์ชัน supersigned สิ่งสำคัญคือต้องโกหกว่าไม่สามารถทำได้โดยไม่มีการอภัยโทษ จำเป็นต้องเปลี่ยนช่วงของค่าการปรับขนาดเพื่อให้แน่ใจ , เพื่อวิเคราะห์ผลลัพธ์, เพื่อรับประกัน, ลบค่า.
ส่งโดยไม่ระบุชื่อ
ในบทความนี้ จะมีการรายงานตัวเลข ตัวดำเนินการทางคณิตศาสตร์ วิธีการแปลงตัวเลขในแถวและแถว เช่นเดียวกับช่วงเวลาสำคัญอื่นๆ มากมาย
isFinite ฟังก์ชั่น
ฟังก์ชัน isFinite ช่วยให้คุณสามารถแทนที่ว่าอาร์กิวเมนต์เป็นตัวเลขสุดท้ายหรือไม่
เป็นผลให้ฟังก์ชันถูกกำหนดให้เป็น false เช่นอาร์กิวเมนต์ є Infinity , -Infinity , NaN หรือจะมีการส่งไปยังค่าตัวเลขพิเศษค่าใดค่าหนึ่งเหล่านี้ มิฉะนั้น ฟังก์ชันนี้จะคืนค่าเป็นจริง
อิสไฟไนต์(73); // จริง isFinite(-1/0); // isFinite เท็จ (อินฟินิตี้); // isFinite เท็จ (NaN); // isFinite เท็จ ("ข้อความ"); // เท็จ
นอกจากฟังก์ชัน isFinite global แล้ว JavaScript ยังมีเมธอด Number.isFinite Vіn na vіdmіnu vіd isFinite จะไม่เปลี่ยนอาร์กิวเมนต์ primus ก่อนตัวเลข
IsFinite("73"); // true Number.isFinite("73"); // เท็จ
ฟังก์ชัน isNaN
ฟังก์ชัน isNaN ได้รับการยอมรับจากข้อเท็จจริงที่ว่าอาร์กิวเมนต์มีจำนวนไค แต่สามารถแปลงเป็นค่าใหม่ได้ ถ้าเป็นเช่นนั้น ฟังก์ชัน isNaN จะประเมินเป็นเท็จ ในทางกลับกัน คุณกลายเป็นจริง
IsNaN(น่าN); //จริงคือNaN("25px"); //จริงสิ เพราะ 20px - จำนวนเต็มคือNaN(25.5); // เป็นเท็จคือNaN("25.5"); // เท็จ isNaN(" "); // ผิดเพราะ ช่องว่างของปัญหาหรือปลาทะเลชนิดหนึ่งเปลี่ยนเป็น 0 isNaN(null); // ผิดเพราะ ค่า null ถูกแปลงเป็น 0 isNaN(จริง); // ผิดเพราะ ค่าจริงจะถูกแปลงเป็น 1 isNaN(เท็จ); // ผิดเพราะ ค่าเท็จจะถูกแปลงเป็น 0
หากคุณต้องการเปลี่ยนรูปแบบโดยไม่มีคำแนะนำประเภท ให้เปลี่ยนวิธี Number.isNaN วิธีนี้เป็นการแนะนำ mov โดยเริ่มจาก ECMAScript 6
จะเปลี่ยนแถวเป็นตัวเลขได้อย่างไร?
เป็นไปได้ที่จะนำแถวของตัวเลข y อย่างชัดเจนด้วยความช่วยเหลือของวิธีการดังกล่าว:
1. วิโคริสเตติ โอเปอเรเตอร์ unary +ซึ่งต้องวางไว้ข้างหน้าความหมาย
+"7.35"; // 7.35 + "ข้อความ"; //น่าน
Tsei sposіb nehtuєช่องว่างบนซังและในตอนท้ายของแถวเช่นเดียวกับ \n (การเลื่อนแถว)
+ "7.35"; //7.35 +"7.35\n"; //7.35
ผู้ชนะ วิถีเดนมาร์กจำเป็นต้องให้ความสนใจกับแถวที่ว่างเปล่าหรือแถวที่ประกอบด้วยการหักบัญชีและ \n ถูกแปลงเป็นหมายเลข 0 สีแดงเข้มของสิ่งนี้ชนะจะแปลงประเภทข้อมูลเป็น null і ค่าตรรกะก่อน.
โมฆะ; //0 + จริง; // 1 + เท็จ; //0 + ""; //0
2. ฟังก์ชัน parseInt ฟังก์ชั่นนี้เป็นที่รู้จักสำหรับการแปลง อาร์กิวเมนต์เป็นจำนวนเต็ม. บนvіdmіnuกับvikoristannya โอเปอเรเตอร์ unary +, วิธีที่กำหนดให้ช่วยให้คุณเปลี่ยนแถวเป็นตัวเลขเป็น ไม่ใช่ทุกตัวอักษรที่เป็นดิจิทัล. เริ่มสร้างแถวใหม่ โดยขึ้นต้นด้วยอักขระตัวแรก และเช่นเดียวกัน มันคือสัญลักษณ์ที่ไม่ได้แปลงเป็นดิจิทัล แต่ฟังก์ชัน zupinyaє ทำงานและหมุนตัวเลข
ParseInt("18px"); /// parseInt("33.3%"); //33
สามารถใช้ฟังก์ชันนี้ได้ ระบบต่างๆตัวเลข (สอง, แปด, สิบ, สิบหก) การแนะนำพื้นฐานของระบบตัวเลขได้รับการจัดตั้งขึ้นเพื่อช่วยเหลือ 2 อาร์กิวเมนต์
ParseInt("18px", 10); /// parseInt("33.3%", 10); //33 parseInt("101",2); ///5 parseInt("B5",16); ///181
ครีมของฟังก์ชัน parseInt ใน JavaScript คือเมธอด Number.parseInt เมธอดนี้ไม่มีส่วนเกี่ยวข้องกับฟังก์ชัน parseInt และการแนะนำ JavaScript ของข้อกำหนด ECMASCRIPT 2015 (6)
3. ฟังก์ชัน parseFloat ฟังก์ชัน parseFloat นั้นคล้ายกับ parseInt เว้นแต่จะอนุญาตให้แปลงอาร์กิวเมนต์เป็นตัวเลขเศษส่วนได้
ParseFloat("33.3%"); ///33.3
แน่นอน ฟังก์ชัน parseFloat ไม่สามารถมี 2 อาร์กิวเมนต์ในมุมมอง parseInt ได้ ดังนั้นจึงจำเป็นต้องดูแถวเป็นตัวเลขใน สิบระบบการคำนวณ
ParseFloat("3.14"); parseFloat("314e-2"); parseFloat("0.0314E+2");
ครีมของฟังก์ชัน parseFloat ใน JavaScript คือเมธอด Number.parseFloat วิธีนี้ไม่มีส่วนเกี่ยวข้องกับฟังก์ชัน parseFloat และการแนะนำ JavaScript ของข้อกำหนด ECMASCRIPT 2015 (6)
การจัดเรียงตัวเลขในแถว
คุณสามารถจัดเรียงตัวเลขใหม่ได้โดยใช้วิธี toString
(12.8) toString(); //"12.8"
เมธอด toString ให้คุณระบุพื้นฐานของระบบการนับสำหรับการแก้ไขว่าจำเป็นต้องส่งตัวเลขไปที่แถวอย่างชัดเจน:
(255). toString(16); //"ฟ"
วิธีแปลง chi єเปลี่ยนเป็นตัวเลข
เป็นไปได้ที่จะกำหนดมูลค่าของการเปลี่ยนแปลงจำนวนด้วยความช่วยเหลือของหนึ่งในวิธีการที่น่ารังเกียจ:
1. ฟังก์ชันบางอย่างของ isNaN และ isFinite:
// myVar - เปลี่ยน if (!isNaN(parseFloat(myVar)) && isFinite(parseFloat(myVar)))) ( // myVar - จำนวนเต็มหรือลดเป็นจำนวนใหม่ได้);
ดูเหมือนว่าฟังก์ชั่น:
// ฟังก์ชั่นฟังก์ชัน isNumeric(value) ( return !isNaN(parseFloat(value)) && isFinite(parseFloat(value)); ) // ตัวแปร var myVar = "12px"; console.log(isNumeric(myVar)); //จริง
วิธีนี้ช่วยให้คุณสามารถกำหนดค่าที่ระบุตามตัวเลขหรือคุณสามารถนำมาเป็นค่าใหม่ได้ ตัวเลือกนี้ไม่คำนึงถึงจำนวนแถวว่าง แถวของช่องว่าง ค่า null อินฟินิตี้ -อินฟินิตี้ ค่าจริงและเท็จ
2. สู่ชัยชนะ ประเภทของโอเปอเรเตอร์และฟังก์ชั่น isFinite, isNaN:
// ฟังก์ชันกำลังจัดเรียงค่าเป็นฟังก์ชันตัวเลข isNumber(value) ( return typeof value === "(!LANG:(!LANG:number)" && isFinite(value) && !isNaN(value); }; // использование функции isNumber isNumber(18); //true // использование функций для проверки текстовых значений isNumber(parseFloat("")); //false isNumber(parseFloat("Infinity")); //false isNumber(parseFloat("12px")); //true !}!}
ฟังก์ชันนี้พิจารณาจากค่าของประเภท Number ที่สามารถระบุได้ และไม่สามารถจำกัดค่าพิเศษใดค่าหนึ่งของ Infinity, -Infinity และ NaN ได้ ถ้าเป็นเช่นนั้น ฟังก์ชันนี้จะกลายเป็นจริง
3. สำหรับความช่วยเหลือเกี่ยวกับวิธีการ ECMAScript 6 Number.isInteger(value) วิธีนี้ช่วยให้คุณกำหนดได้ว่าค่าใดที่ระบุด้วยจำนวนเต็ม
Number.isInteger("20"); // ผิดเพราะ วิธีนี้ไม่ชนะการแปลแถวก่อน Number.isInteger(20); //จริงสิ เพราะ ค่าที่กำหนดєจำนวน
อ่านและ unpaired ตัวเลข
คุณสามารถเปลี่ยนจำนวนเด็กชายและเด็กหญิงเพื่อขอความช่วยเหลือได้ ฟังก์ชั่นที่จะเกิดขึ้น:
// ฟังก์ชันการแปลงตัวเลขเป็นฟังก์ชันพาริตี isEven(n) ( return n % 2 == 0; ) // ฟังก์ชันสำหรับแปลงตัวเลขเป็นฟังก์ชัน parity isOdd(n) ( return Math.abs(n % 2) == 1; )
แต่ก่อนหน้านั้น ให้ดำเนินการตรวจสอบ bazhano perekonatisya อีกครั้งซึ่งระบุด้วยค่าของตัวเลข:
ค่า=20; if (Number.isInteger(value)) ( if (isEven(value))) ( console.log("Number " + value.toString() + " - man"); ) )
ให้อภัยตัวเลขใน Javascript
ส่องก้นคนเห็นช่วยหน่อย Javascript เป็นเรื่องง่ายตัวเลขตั้งแต่ 2 ถึง 100
// ฟังก์ชันที่แปลงตัวเลขเป็นฟังก์ชันเดียวอย่างง่าย isPrime(value) ( if (isNaN(value) || !isFinite(value) || value%1 || value< 2) return false; var max=Math.floor(Math.sqrt(value)); for (var i = 2; i< = max; i++) { if (value%i==0) { return false; } } return true; } // создать массив, который будет содержать ตัวเลขง่ายๆ var 2 ถึง 100 var primaryNumber =; สำหรับ (var i = 2; i<= 100; i++) { if(isPrime(i)) primaryNumber.push(i); } // вывести в консоль простые числа от 2 до 100 console.log(primaryNumber);
Javascript การปัดเศษตัวเลข
มีหลายวิธีในการปัดเศษตัวเลขให้เป็นค่าจำนวนเต็มใน JavaScript
1. Vicorista ได้รับการยอมรับเป็นพิเศษสำหรับวิธีนี้ Math.floor, Math.ceil และ Math.round วิธี Math.floor จะปัดเศษตัวเลขที่น้อยที่สุดให้เป็นจำนวนเต็มที่ใกล้เคียงที่สุด เพียงแค่คายอนุภาคที่ถูกยิงออกมา Math.ceil ปัดเศษจำนวนเต็มที่ใกล้เคียงที่สุดให้เป็นจำนวนเต็มที่ใกล้เคียงที่สุด Math.round ปัดเศษตัวเลขขึ้นและลงอย่างมากขึ้นอยู่กับมูลค่าของช็อต หากส่วนปืนลูกซองใหญ่กว่าหรือแพงกว่า 0.5 ให้ขึ้นเนินมิฉะนั้นจะบิดลง
Console.log(Math.floor(7.9)); ///7 console.log(Math.ceil(7.2)); ///8 console.log(Math.round(7.5)); //แปด
2. สำหรับความช่วยเหลือเกี่ยวกับวิธีการ toFixed(ความแม่นยำ) วิธีการของเดนมาร์กปัดเศษเศษส่วนของตัวเลขให้ได้ความแม่นยำที่กำหนด ผลลัพธ์ของการปัดเศษจะหมุนในแถวที่มองเห็น
Console.log(7.987.toFixed(2)); //"7.99"
เป็นสัญญาณหลังจาก Komi เกี่ยวกับการก่อตัวของความแม่นยำที่กำหนดของจำนวนข้อบกพร่องจะถูกเสริมด้วยศูนย์
Console.log(7.987.toFixed(5)); //"7.98700"
3. สำหรับความช่วยเหลือของวิธีการ toPrecision วิธีการของเดนมาร์กแสดงตัวเลขที่มีความแม่นยำที่ระบุ ด้วยไวน์นี้ คุณสามารถปัดเศษได้ไม่เพียงแค่เศษส่วนเท่านั้น แต่ยังสามารถปัดเศษของตัวเลขทั้งหมดได้ด้วย Otrimane จำนวนของวิธีนี้สามารถส่งใน fallage ในผลลัพธ์ด้วยอาการโคม่าคงที่หรือในรูปแบบเลขชี้กำลัง
Console.log((1001).toPrecision(2)); //"1.0e+3" console.log((1001).toPrecision(5)); //"1001.0" console.log((12.4).toPrecision(1)); //"1e+1" console.log((12.4).toPrecision(2)); //"12" console.log((12.4).toPrecision(3)); //"12.4" console.log((12.4).toPrecision(5)); //"12.400"
4. ตัวดำเนินการตรรกะที่มีชัยชนะไม่ใช่ chi ABO
//สำหรับความช่วยเหลือของหน้าต่างย่อยแบบลอจิคัล console.log(~~7.9); ///7 // ABO ที่ดูเหมือนมีเหตุผลจะมีค่า null: console.log(7.9^0); ///7
ตัวเลขและเศษส่วนของตัวเลข
คุณสามารถลบส่วนจำนวนเต็มของตัวเลขได้โดยใช้เมธอด Math.floor() และ parseInt() เพิ่มเติม:
Console.log(Math.floor(7.21)); // 7 console.log(parseInt(7.21)); // 7
คุณสามารถนำเศษส่วนของตัวเลขออกได้โดยตัวดำเนินการ ซึ่งจะทำให้ตัวเลขเร็วขึ้น (%) โอเปอเรเตอร์นี้พลิกส่วนที่เกินซึ่งจะถูกนำมาจากด้านล่างของตัวเลขแรกในอีกด้านหนึ่ง ที่ ถึงประเภทนี้โดยเฉพาะเช่น 2 หมายเลขจำเป็นต้องชนะ 1
Console.log(7.21%1); // 0.209999999999999999 // สูงสุด 2 อักขระหลัง komi console.log((7.21%1).toFixed(2)); // "0.21"
Krim tsgogo ส่วน shot สามารถนำไปคำนวณเพิ่มเติมได้:
หมายเลขวาร์ = 7.21; var FractionNumber = ตัวเลข - Math.floor(Math.abs(number)); console.log (หมายเลขเศษส่วน); // 0.20999999999999996
จี้ขยายจำนวนคน
เป็นไปได้ที่จะกำหนดจำนวนครั้งที่สามารถเพิ่มจำนวนได้โดยใช้ความช่วยเหลือจากโอเปอเรเตอร์:
วาร์นัมเบอร์ = 9; // หากมีส่วนเกินในการหารตัวเลขด้วย 3 ก่อน 0, ดังนั้น if (number%3==0) ( console.log ( "Number " + number + " หารด้วย 3 "); ) else (console.log log("Number" + number + "ไม่หารด้วย 3");
การจัดรูปแบบตัวเลข
ใน JavaScript เพื่อจัดรูปแบบการแสดงตัวเลขตามมาตรฐานท้องถิ่น (โดยการปรับระบบปฏิบัติการในปัจจุบัน) อนุญาตให้ใช้เมธอด toLocaleString()
ตัวอย่างเช่น สามารถจัดรูปแบบตัวเลขตามมาตรฐานภูมิภาคตามที่ติดตั้งในระบบการส่งเสริมการขาย:
หมายเลขวาร์ = 345.46; console.log(number.toLocaleString()); //"345,46"
ตัวอย่างเช่น เป็นไปได้ที่จะจัดรูปแบบตัวเลขตามมาตรฐานภูมิภาคของรัสเซีย (ru):
Console.log((108.1).toLocaleString("ru-RU")); //"108.1"
วิธีการของเดนมาร์กสามารถปรับเปลี่ยนเพื่อจัดรูปแบบตัวเลขในสกุลเงินต่างประเทศได้:
Console.log((2540.125).toLocaleString("ru-RU",(style:"currency", currency:"RUB")))); //"2,540.13 ₽" console.log((89.3).toLocaleString("ru-RU",(style:"currency", currency:"USD"))); //"$89.30" console.log((2301.99).toLocaleString("ru-RU",(style:"currency", currency:"EUR"))); //"€2,301.99"
การส่งตัวเลขเมื่อเห็นvіdsotkіv:
Console.log((0.45).toLocaleString("ru-RU",(style:"percent")))); //"45%"
แบ่งตัวเลขออกเป็นแถว (พลังของ useGrouping):
Console.log((125452.32).toLocaleString("ru-RU",(useGrouping:true))); //"125 452.32"
ป้อนหมายเลขร้องเพลงของตัวเลข (2) หลัง Komi:
Console.log((1240.4564).toLocaleString("ru-RU",(minimumFractionDigits:2, maximumFractionDigits:2)))); //"1240.46"
จับคู่ตัวเลข
เพื่อให้ตัวเลขเท่ากัน JavaScript ใช้ตัวดำเนินการที่ไม่เหมาะสม: == (เท่ากับ), != (ไม่เท่ากัน), > (มากกว่า)< (меньше), >= (มากกว่าหรืออย่างใดอย่างหนึ่ง)<= (меньше или равно).
ตัวอย่างเช่น เราเปรียบเทียบตัวเลขสองตัว:
Console.log(2>3); // เท็จ console.log(5>=3); //จริง
เมื่อตัวเลขเท่ากันกับปืนลูกซอง จำเป็นต้องป้องกันความผิดพลาด เนื่องจากอาจถูกตำหนิเป็นเวลาหลายชั่วโมงของซิกข์
ตัวอย่างเช่น ใน JavaScript ผลรวมของตัวเลข (0.2 + 0.4) ไม่เท่ากับ 0.6:
Console.log((0.2+0.4)==0.6); //เท็จ
ค่าธรรมเนียมเกิดจากการที่การคำนวณทั้งหมดของคอมพิวเตอร์หรืออย่างอื่น สิ่งที่แนบมาอิเล็กทรอนิกส์ viroblyaєใน 2 ระบบของตัวเลข ทูบโต ก่อนหน้านั้นเนื่องจาก vikonaty yakіsdіїคอมพิวเตอร์มีความผิดในการปรับปรุงการแสดงหมายเลข 2 ในระบบตัวเลข เอล อย่าเป็นเหมือนโหลทริบน์ ตัวเลขสามารถแสดงเป็น 2 ระบบของตัวเลขได้อย่างแม่นยำ
ตัวอย่างเช่นระบบจำนวน 0.25 10 dvіykovuแปลงอย่างแน่นอน
0.125 × 2 = 0.25 | 0 0.25 × 2 = 0.5 | 0 0.5 × 2 = 1 | 1 0.125 10 = 0.001 2
ตัวอย่างเช่น ตัวเลข 0.2 10 สามารถแปลงเป็น 2 ระบบเท่านั้นที่มีความแม่นยำเท่ากัน:
0.2×2 = 0.4 | 0 0.4 × 2 = 0.8 | 0 0.8 × 2 = 1.6 | 10.6 × 2 = 1.2 | 10.2 × 2 = 0.4 | 0 0.4 × 2 = 0.8 | 0 0.8 × 2 = 1.6 | 10.6 × 2 = 1.2 | 10.2 × 2 = 0.4 | 0 0.4 × 2 = 0.8 | 0 0.8 × 2 = 1.6 | 10.6 × 2 = 1.2 | 1 ... 0.2 10 = 0.001100110011 ... 2
ด้วยเหตุนี้ ฉีของข้อผิดพลาดจะปรากฏขึ้นเมื่อคำนวณผลรวมของตัวเลขสองตัวและผลลัพธ์จะเท่ากัน ทูบโต เราจะเห็นว่า JavaScript จะรวบรวมรายการนี้ในลำดับที่จะมาถึง:
0.6000000000000001==0.6
เมื่อคำนวณจำนวนตัวเลขด้วยปืนลูกซอง จำเป็นต้องระบุความแม่นยำซึ่งจำเป็นต่อการทำงาน
ตัวอย่างเช่น จับคู่ตัวเลขได้ไม่เกิน 2 หลักหลังจากใช้วิธี toFixed() และ toPrecision()
//เมธอด toFixed() console.log((0.2+0.4).toFixed(2)==(0.6).toFixed(2)); //true //toPrecision() เมธอด console.log((0.2+0.4).toPrecision(2)==(0.6).toPrecision(2)); //จริง
การดำเนินการทางคณิตศาสตร์ขั้นพื้นฐาน
JavaScript มีตัวดำเนินการทางคณิตศาสตร์ขั้นสูง: + (เพิ่มเติม), - (เพิ่มเติม), * (หลายตัว), / (แยก), % (เกินเกิน), ++ (เพิ่มค่า 1), - (ลดค่าลง 1)
6+3 //9 6-3 //3 6*3 //18 6/3 ///2 6%3 //0, แล้ว 6: 3 = 2 => 6-3 * 2 => เปรี้ยว (0) 5% 2 / / 1 จากนั้น 5:2=2(.5) => 5-2*2 => zust(1) 7.3%2 //1.3 จากนั้น 7.3:2=3(.65) => 7.3-2*3 => rest(1.3) //เครื่องหมายของผลลัพธ์ของการดำเนินการ % เท่ากับเครื่องหมายของค่าแรก -9%2.5 //-1.5 , แล้ว. 9:2.5=3(.6) => 9-2.5*3 => zust(1.5) -9%-2.5 //-1.5 จากนั้น 9:2.5=3(.6) => 9-2.5*3 => zust(1.5) -2%5 //-2 จากนั้น 2:5 = 0 (.4) => 2-5 * 0 => ความสุก (2) x = 3; บันทึกคอนโซล (x++); //ประเภท 3 จากนั้นตั้งค่า 4 ภายหลัง console.log(x); ///4 x = 3; บันทึกคอนโซล (++x); // ตั้งค่า 4 และแสดง x = 5; บันทึกคอนโซล (x--); // พิมพ์ 5 จากนั้นตั้งค่า 4 ภายหลัง console.log(x); ///4 x = 5; บันทึกคอนโซล (--x); // แทรก 4 และแสดง Crimson JavaScript єรวมโอเปอเรเตอร์: x+=y (x=x+y), x-=y (x=x-y), x*=y (x=x*y), x/= y ( x = x / y), x % = y (x = x % y) x=3; ปี=6; x+=y; บันทึกคอนโซล (x); //9 x = 3; ปี=6; x-=y; บันทึกคอนโซล (x); //-3 x = 3; ปี=6; x*=y; บันทึกคอนโซล (x); ///18 x = 3; ปี=6; x/=y; บันทึกคอนโซล (x); //0.5 x = 3; ปี=6; x%=y; บันทึกคอนโซล (x); ///3
ในส่วนนี้ของเรา, ที่จะครอบครองเราด้วยความรู้ในวัตถุ ตัวเลขเป็นคอนเทนเนอร์สำหรับชนิดข้อมูลตัวเลข Yogo vlasne ob'ektna sutnіst วันนี้จะถูกทำลายแม้อยู่ด้านบน
มากเหมือนวัตถุ สตริงกวาดแถวข้อความ วัตถุ ตัวเลขตัวเลขล้างแค้น เช่นเดียวกับแถว ตัวเลข เช่นเดียวกับที่เราสร้าง อะตอมจะกลายเป็นตัวอย่างของวัตถุ
ประเภทข้อมูล หมายเลข
ตัวเลขใน JavaScript สามารถเป็นได้สองประเภท: ตัวเลขและทศนิยม (แบ่งออกเป็นประเภทที่ไม่ระบุตัวตน เช่นเดียวกับการย้ายอื่นๆ - จำนวนเต็ม ยาว สั้น สองเท่า - ไม่ใช่ที่นี่) ตัวเลขที่มีจุดลอยตัวคือตัวเลขและส่วนที่ยิง คั่นด้วยจุด (ไม่ขึ้นกับมาตราส่วนของประเทศ)
ตัวเลขสองประเภทนี้ไม่ใช่ประเภทอิสระและไม่ต้องการการแปลงพิเศษระหว่างกัน Yakscho ตัวอย่างเช่น 32.5 เราคูณด้วย 0.4 , แล้วเราก็เอาจำนวนเต็ม 13 , ไม่ใช่ drib 13.0 เนื่องจากจำเป็นต้องแปลงค่าตัวเลขเป็นจำนวนเต็ม (ซึ่งมักจะหนาแน่นในภาษาอื่น)
การสร้างวัตถุ Number
ไลค์และแถว ตัวเลขร้องสร้างเหมือนตัวอย่างของอ็อบเจกต์ ตัวเลขเราจะให้อภัยคำสารภาพ (สำหรับมุมมองของแถวนั้นไม่จำเป็นต้องใช้อุ้งเท้า)
var myNum = 21;เอล คุณสามารถสร้างออบเจ็กต์ใหม่สำหรับคอนสตรัคเตอร์เพิ่มเติม:
var myNum = หมายเลขใหม่; myNum = 21;ที่สำคัญกว่านั้นคือvipadkіv tse zayve และ navit shkіdly การใช้งานที่ถูกต้องของงานที่คล้ายกันกับวัตถุของโลกสามารถดูได้ในตอนที่ 4
การส่งเลข
รูปแบบเลขชี้กำลัง
ตัวเลขสามารถแสดงเป็นzvichaynіyได้ดังนั้นในรูปแบบเลขชี้กำลังเช่น:
2e6 // ไม่มีพัก!Tse หมายถึง: 2 x 106
เราจะแสดงตัวเลขดังกล่าวด้วยวิธีเอกสารได้อย่างไร เขียน()แล้วเอาจำนวนเครื่องบรรณาการที่ยิ่งใหญ่ออกไป
เอกสาร. เขียน(14e12);
ผลลัพธ์:
ระบบเลขพื้นฐาน
ตัวเลขสามารถแสดงเป็นหลักสิบได้เช่นกัน ดังนั้นในระบบที่สิบหกและแปด
ซิลิชตัวเลขในรูปแบบที่สิบ ไม่ผิดเริ่มจากศูนย์ดังนั้นศูนย์จึงเป็นคำนำหน้าสำหรับระบบสิบ แค่ 0 คำนำหน้าสำหรับค่าสูงและ 0xสำหรับวันที่สิบหก
ตัวอย่างเช่น, 075 Tse การรวมฐานแปดของจำนวนที่สิบ 61 , แ 0x75การเกิดครั้งที่สิบหกของจำนวนที่สิบ 117 .
สำหรับค่าสูงสุด ตัวเลขvіd 0 ก่อน 7 สำหรับชุดตัวอักษรดิจิทัลเลขฐานสิบหก 0123456789ABCDEF. ตัวอักษรสามารถบิดได้ มีทะเบียน.
ใน virases เลขคณิต เราสามารถบิดรูปแบบของตัวเลขได้ แต่ผลลัพธ์จะแสดงเป็นตัวเลขที่สิบ
การส่งเลขในระบบอื่นๆ
พูดถึงวัตถุ สตริงเราใช้วิธี toString()ไม่ว่าจะเป็นซองจดหมายอะไรก็ตามที่เป็นวัตถุเรียงกันเป็นแถว เมื่อแปลงตัวเลขในแถว จำเป็นต้องระบุระบบตัวเลขเป็นอาร์กิวเมนต์
กลับเคารพ
จำเป็นต้องใส่หมายเลขซังไว้ในอ้อมแขน
(ตัวเลข). toString(ระบบ)
ระบบคุณสามารถยอมรับค่าใดก็ได้ตั้งแต่ 2 ถึง 36
(157 ).toString(2 ); // Dviykove ประกาศ 157 หนึ่ง (53 ).toString(27 ); // รูปลักษณ์ 27 แถวที่แปลกใหม่ 53 หนึ่ง
Ale tsi otrimani virazi ในแถว ในการทำงานกับจำนวนจริงในระบบของตัวเลข ผลลัพธ์ที่ต้องการของวิธีการ toString(ระบบ)แปลงกลับเป็นตัวเลข การต่อสู้ไม่ใช่วิธีการ แต่ ฟังก์ชันเคอร์เนล หมายเลข (วัตถุ). เราจะพูดถึงฟังก์ชันเคอร์เนลในบทเรียนถัดไป แต่สำหรับตอนนี้ ให้ใส่ใจกับไวยากรณ์ซึ่งคล้ายกับฟังก์ชันรายสัปดาห์:
วาร์ = 1546; วาร์ ข = ก. toString(2); วาร์ค = ตัวเลข(ข);Abo ทันที "สองในหนึ่ง":
วาร์ = 1546; วาร์ ข = ตัวเลข(ก. toString(2 ));บันทึก
หากตัวเลขถูกรับรู้ว่าเป็นการเปลี่ยนแปลง ก็ไม่จำเป็นต้องนำหมายเลขนั้นไปที่ส่วนโค้งเมื่อใช้วิธีวิกิ toString() .
อำนาจหน้าที่ของวัตถุ Number
วัตถุหลักของตัวสร้างกำลังและต้นแบบติดอยู่ในบทเรียนเกี่ยวกับวัตถุ วัตถุแต่ในขณะเดียวกันเราก็ดุร้ายถึง หน่วยงานเฉพาะวัตถุ ตัวเลข.
พลังฉี แผ่นอ่านหนังสือดังนั้นเราจึงไม่สามารถเปลี่ยนแปลงได้
MAX_VALUE
จำนวนสูงสุดที่ใช้ได้สำหรับการแยกวิเคราะห์ JavaScript
เราสงสัยว่าตัวเลขนี้เป็นอย่างไร:
var e = จำนวน MAX_VALUEเอกสาร. เขียน(จ)ผลลัพธ์:
1.7976931348623157e+308
นอกจากนี้ อารมณ์นี้ไม่ใช่สัญญาณของความสำเร็จ แต่เป็นก้าวที่ดี tobto 1.7976931348623157 × 10 308
บันทึก
ให้ฉันสาธิตผลลัพธ์ด้วยความช่วยเหลือของการเขียนสคริปต์จริงๆ และการนับเลขเศษส่วนอย่างมั่งคั่งยิ่งขึ้นสามารถเป็นเดิมพันที่ด้านข้าง และผลลัพธ์ที่มากขึ้นในแต่ละบทเรียนจะถูกเขียนขึ้น พูดได้ว่า "อยู่ในมือ"
MIN_VALUE
และนี่คือค่าต่ำสุดที่เห็นได้ชัด Doslіdzhuєmoโยคะ
var f = จำนวน MIN_VALUEเอกสาร. เขียน(ฉ)ผลลัพธ์:
Tobto 5×10-324
ความหมายที่ไม่ใช่ตัวเลขซึ่งพวกเขาเข้าใจผิด
สิทธิ์นี้จะเปลี่ยน JavaScript หากการดำเนินการที่เป็นตัวเลขดูเหมือนว่าจะให้ผลลัพธ์ที่ไม่ใช่ตัวเลข
NEGATIVE_INFINITY, POSITIVE_INFINITY
เมื่อพวกเขาเข้าไปข้างใน พวกเขาพูดประมาณว่า "กวางตัวหนึ่ง กวางสองตัว กวางเยอะมาก"
JavaScript เคารพ "สลิปผ่าน" อีกสามตัว: "กวางหนึ่งตัว กวางสองตัว กวางสามตัว ... 1.7976931348623157 × 10308 กวาง กวางหลายตัว"
ในระหว่างนี้ "รวย" แสดงโดยเจ้าหน้าที่ POSITIVE_INFINITY.
ในระหว่างกระบวนการกลับรายการ หนึ่งตัว ("กวางตัวหนึ่ง") ถูกตัดบน shmatochka เลี้ยงลูก-เลี้ยงลูกด้วย shpatochka การรักษาที่ดีที่สุด 5 × 10 -324 ส่วน อะไรที่น้อยไปก็มีอยู่แล้ว NEGATIVE_INFINITY.
วิธีการของวัตถุจำนวน
หมายเหตุ: เช่นเดียวกับในเมธอด toString() ในวิธีอื่นๆ ทั้งหมด จำเป็นต้องใส่ตัวเลขลงในส่วนโค้ง เนื่องจากมีการนำเสนออย่างชัดเจน (และไม่ใช่ในรูปลักษณ์ที่เปลี่ยนแปลง)
เป็นเอกซ์โพเนนเชียล ()
หมุนแถวเพื่อใส่ตัวเลขในลักษณะเลขชี้กำลัง โดยมีหนึ่งหลักก่อนจุดที่สิบ
ไวยากรณ์:
ตัวเลข. เป็นเอกซ์โพเนนเชียล(จำนวนป้าย)
การโต้แย้ง จำนวนป้ายตั้งค่าความแม่นยำของการปัดเศษหลังจุดทศนิยม ตามอาร์กิวเมนต์ของการละเว้น จำนวนหลักหลังจุดทศนิยมจะเท่ากับจำนวนหลักที่จำเป็นในการแสดงค่า
ก้น:
var myFullNumber = 4659872156831598853654127 ; เอกสาร. เขียน(myFullNumber.toExponential(4))ผลลัพธ์:
แก้ไข ()
หมุนแถวที่แสดงตัวเลขด้วยจุดคงที่ ปัดเศษตามจำนวนตำแหน่งทศนิยมที่ระบุในอาร์กิวเมนต์
ไวยากรณ์:
ตัวเลข. คงที่(จำนวนป้าย)
นำมาใช้:
var myDecimal1 = 46.59872156831598853654127; var myDecimal2 = 46; เอกสาร. เขียน(myDecimal1.toFixed(1)) เอกสาร เขียน("") เอกสาร. เขียน(myDecimal2.toFixed(3))
ผลลัพธ์:
วิธีนี้บางครั้งซ้ำซากกว่า ตัวอย่างเช่น ฟังก์ชันที่ยุ่งยากจากบทเรียนที่แล้วสามารถแสดงได้ดังนี้:
ฟังก์ชั่น anyRootPlus(x, y) (var srcnum = Math. exp(คณิตศาสตร์. บันทึก(x) / y); varresult = (srcnum). คงที่(3); ส่งคืนผลลัพธ์; )และตอนนี้ขอแทรกแบบฟอร์มและประท้วง:
เป็นความจริง ตอนนี้ตัวเลขจะเป็นศูนย์จากแฝดสามหลังจุด แต่จากการที่ทราบพฤติกรรมของตัวเลขและแถว ในขณะที่ฝึกกับตัวดำเนินการอัจฉริยะและประเภทการแปลง จึงไม่ง่ายนักที่จะพัฒนา "การออกแบบ" ที่เป็นตัวเลขที่จำเป็น
toLocaleString()
ฉันเปลี่ยนวัตถุที่เป็นตัวเลขในแถวของค่าด้วยการปรับปรุงการปรับปรุงระดับชาติสำหรับผู้ค้าปลีกและผู้ค้าปลีกหลายสิบรายระหว่างหลายพันราย สกุลเงินประจำชาติถูกนำมาใช้เป็นพื้นฐาน ดังนั้นในเวอร์ชันรัสเซีย ทุกอย่าง หมายเลขนำทาง ตัวเลขจะแสดงด้วยอักขระสองตัวหลัง Komi (สำเนา):
var myDrob = 25.327; var myMnogo = 25635120; var myRoubl = 35; /* มาดูกันดีกว่า มาดูโคมิกันดีกว่า */เอกสาร. เขียน(""
+myDrob. toLocaleString() + "" ); เอกสาร. เขียน(""
+ myMnogo. toLocaleString() + "" ); เอกสาร. เขียน(""
+ myRoubl. toLocaleString() + "" );ผลลัพธ์:
ความแม่นยำ ()
หมุนแถวเพื่อสร้างตัวเลขจากตัวเลขนัยสำคัญที่กำหนด
ไวยากรณ์:
ตัวเลข. ความแม่นยำ(ตัวเลข)
การโต้แย้ง:
ตัวเลขจำนวนตัวเลขในแถวที่แสดง ตั้งไว้กี่ตัว ปริมาณมากขึ้นสำหรับตัวเลขสุดท้าย เลขศูนย์สิบตัวจะปรากฏขึ้น
เอกสาร. เขียน((354 ).ความแม่นยำ(8 ))
ผลลัพธ์:
วิธีการ ความแม่นยำ ()і toLocaleString()ง่วงนอน อย่าฝึก, สำหรับ "การออกแบบของรัสเซีย" ของตัวเลขนั้นจำเป็นต้องเขียนฟังก์ชั่นที่เหมาะสมให้ถูกต้อง ฟังก์ชันเขียนสามารถพัฒนาได้โดยใช้วิธีอ็อบเจ็กต์เพิ่มเติม ตัวเลข, เรากำลังทำงานกับวัตถุอยู่แล้ว วันที่(). รายละเอียดเพิ่มเติมในบทเรียนเกี่ยวกับวัตถุ วัตถุ.
toString()
เราได้วิเคราะห์วิธีนี้อย่างละเอียดแล้วเมื่อเริ่มบทเรียน
เราสร้างวิธีการที่เชื่อถือได้
และตอนนี้ เรากำลังสร้างวิธีการแบบเดียวกัน ซึ่งก็คือจำนวนนับสิบของสัญญาณจากช่องว่างระหว่างหลักพัน และนั่นก็เหมือนกับราซดิลนิกหลายสิบ
สำหรับผู้ที่เราจะต้องทำหน้าที่ที่ชาญฉลาดให้สมบูรณ์ วิธีจัดการกับการจัดเรียงแถวและอาร์เรย์ใหม่ การลบอินสแตนซ์ของวัตถุ ตัวเลข.
ลองพูดวิธีการ:
Number.prototype.toRussianString = toRussianString
ไปที่จุดเริ่มต้นของฟังก์ชันกำหนดงาน
ที่ด้านหลัง เราต้องแสดงตัวเลขเหมือนแถวและชนะส่วนหนึ่งจากจำนวนเต็มใหม่ ส่วนการยิง และการแยกจุด
จากนั้น เติมช่องว่างที่จำเป็นให้ครบทุกส่วน ปัดส่วนที่ยิงเป็นจำนวนสัญลักษณ์ เนื่องจากคุณสามารถระบุเป็นอาร์กิวเมนต์ของฟังก์ชัน (และวิธีการ) และจดจำจุดบนใครบางคน
มาเริ่มฟังก์ชั่นการประกาศการเปลี่ยนแปลงที่จำเป็นกัน
ฟังก์ชัน toRussianString(prec) ( /* เปลี่ยนเป็นเรียงลำดับแถวใหม่ */วาร์ a = "" , ข = "" c, d, e;ก้าวไปข้างหน้า ฉันจะบอกว่าหลายสิบส่วนของการก่อกวนแบบทีละแถวกำลังสูญเสียความเป็นจริงที่ "เปราะบาง" ไป และฝึกฝนกับมันราวกับว่ามันเป็นจำนวนเต็มเดียว ในการทำงานกับเธอเราเร่งด้วยวิธีการ ความแม่นยำ ()และอาร์กิวเมนต์ของฟังก์ชันของเรา (และในขณะเดียวกันของวิธีการของเรา) ตั้งค่าสำหรับวิธีการเอง ความแม่นยำ (). พารามิเตอร์ขั้นต่ำของวิธีนี้คือหนึ่ง และสำหรับฟังก์ชันของเรา อาจต้องใช้ศูนย์ (เมื่อปัดเศษเป็นจำนวนเต็ม) І กรณีปัดเศษให้ถูกต้อง ใช้ก่อนได้ เนื่องจากเราจะถอดรหัสวัตถุได้ดีขึ้น นั่นเป็นเหตุผลที่เมื่อมีการประกาศการเปลี่ยนแปลงหินใต้น้ำนี้:
/* เปลี่ยนสิ่งที่แปลงอินสแตนซ์อ็อบเจ็กต์เป็นแถวของงาน */ถ้า (prec == 0) var str = นี่ คงที่(0 ).toStringtoString(10 );เรายังคงพูดการเปลี่ยนแปลง
/* เปลี่ยนเป็นค่าที่หมุน */ varnr1; /* เปลี่ยนอะไหล่ "ผ่า" */ var intpart, fractpaft, precpart, ตัวแบ่ง, dot = str LastIndexOf("." ); /* lichnik */ var i;Zminna จุดทราบตำแหน่งของจุดในแถวของตัวเลขที่ระบุ สำหรับตำแหน่งเดียวกัน เราจะเห็นทั้งส่วน ( intpart). หากไม่มีจำนวน tsile และ point ตำแหน่งจะน้อยกว่าศูนย์ ในโอกาสนี้และพ่อมด ( ตัวแบ่ง) อนุภาคที่ยิงนั้น ( เศษส่วน) เพื่อล้างแต่แถวที่ว่างเปล่า ในอีกกรณีหนึ่งอาการโคม่าถูกกำหนดให้กับผู้ค้าปลีกและให้ส่วนช็อตสำหรับงานต่อไป:
ถ้า (จุด< 0 ) { intpart = str; fractpart = "" ; ตัวแบ่ง = "" ;) อื่น ๆ (intpart=str. สตริงย่อย(0, จุด); เศษส่วน = str สตริงย่อย(จุด + 1, str. ความยาว); ตัวแบ่ง = "," ;}Pratsiyuemo ที่มีทั้งส่วน เราพยายามมากเกินพอใน vipad นั้น เนื่องจากมีสัญลักษณ์มากกว่า 3 ตัวในนั้น:
ถ้า (intpart. ความยาว > 3 ) {ตอนนี้เราสามารถจัดวางโซลิแทร์ที่น่ารังเกียจ (ทุกอย่างอยู่ตรงกลางของผู้ควบคุมอัจฉริยะ):
มาดูวงจรกันเป็นแฝดสามในลำดับที่กลับกัน
ฉันจะเอามันมาจากด้านหลังศีรษะของฉัน เอโดยไม่ต้องเพิ่มเติมใด ๆ เพียงเพื่อคำนวณ dozhina ของงานที่คุณได้ตัดสิน แม้ว่าจำนวนหลักจะไม่ได้ขยายเป็น 3 หลัก แต่หาง 1 หรือ 2 หลักก็ถูกทิ้ง และตอนนี้เราสามารถห้อยและโยโกะที่สายตาของแถวนั้นได้ เมื่อเห็นแถวแรกของแถวทั้งแถวแล้วหาง ของแถวที่มี "สาม" (เปลี่ยน ค). ฉันจะวางที่โล่งที่ยังไม่ได้สำรวจไว้ข้างหน้าเขา (เราจะทำความสะอาดในภายหลัง) ใหม่? อ่านเศษของกลุ่มตัวเลขสามหลักในลำดับที่กลับกัน และควรวางหางทั้งหมดไว้ในแถวสุดท้าย เมื่อเราได้ตัวเลขแล้ว สมมุติว่า 36748521 เราจำเป็นต้อง vibuduvaty 521 748 36 วางการหักล้างที่ไม่ชัดเจนไว้หน้ากลุ่มสกิน เพื่อให้เรามีตัวเว้นวรรคสำหรับอาร์เรย์ (แม้ว่าเราจำเป็นต้องเปลี่ยนกลับ แต่เราสามารถทำงานได้โดยใช้วิธีอาร์เรย์ ย้อนกลับ()).
ที่ คำแนะนำที่เหลือเราสามารถจัดวงจรเป็นแฝดสามและเขียนผลลัพธ์ในการเปลี่ยนแปลง ข.
สำหรับ (i=intpart. ความยาว-3; ผม>=0; ผม-=3) /* เลือกสามตัว */(a = a + intpart. ย่อย(ผม, 3); /* รู้จัก levi "tail" */ค= " " +ส่วนภายใน. ย่อย(0, ส่วนภายใน. ความยาว-ก. ความยาว); /* กระจายเป็นแฝดสาม */ b=b+ " " +ส่วนภายใน. ย่อย(ผม 3);)เมื่อพับแถว b+cเราจะเอาแถวหนึ่งซึ่งจำเป็นต้องแปลงเป็นอาร์เรย์ จากนั้นเราจะแปลงอาร์เรย์นี้ซ้ำแล้วซ้ำอีกแปลงเป็นแถว (ทุกอย่างจะถูกบันทึกในการเปลี่ยนแปลง d).
D = (b+c). แยก(" " ).ย้อนกลับ().toString().แทนที่(/,/g, " " );
อาร์เรย์แปลงเป็นแถวทันทีจาก clods-spreaders เราไม่ต้องการกลิ่นเหม็น ดังนั้นในคำแนะนำเดียวกัน เราเห็นพวกเขาเพื่อขอความช่วยเหลือ ปกติ virazu /, /g, เดอ /,/ การสร้างนิพจน์ทั่วไปสำหรับ Komi และ g“Ensign” ซึ่งแสดงว่าจำเป็นต้องเปลี่ยนเครื่องหมายของ viraz ทั้งหมด (ดูเหมือนจะเป็น Komi ทั้งหมด) ราวกับจะเข้าแถวเป็นแถว แทนที่ด้วยสำนักหักบัญชีที่ไม่สามารถตรวจจับได้แบบเดียวกัน
(รายงานเกี่ยวกับการกล่าวสุนทรพจน์ปกติจะอยู่ในส่วนที่เหลือของคู่มือ)
และตอนนี้คุณต้องทำความสะอาดอย่างอื่น (ตรงกลางของตัวดำเนินการอัจฉริยะตัวเดียวกัน ถ้า (ความยาว intpart > 3)).
ทางด้านขวา ที่ cob หรือปลายแถวของเรามีช่องว่างที่ไม่เด่นซึ่งประกอบด้วยอักขระ 6 ตัว: "&", "n", "b", "s", " พี" และ ";" มาทำความสะอาดและจดผลลัพธ์ของการเปลี่ยนแปลงกัน อี:
ถ้า (ง. สตริงย่อย(0 , 1 ) == "&" ) e = ง. สตริงย่อย(6, ง. ความยาว-6); อื่น e = d สตริงย่อย(0, ง. ความยาว-6 );Axis ตอนนี้เราสามารถปิดทั้งหมดได้ ตัวดำเนินการอัจฉริยะและเขียนทางเลือกแทนตัวเลขสั้นๆ ดังนั้นจึงไม่จำเป็นต้องแบ่งเป็น "สาม"
) อื่น ๆ e = intpart;พ่อเปลี่ยน อีบันทึกส่วนทั้งหมดของจำนวนแล้วเราจะดูแลหลักสิบ
เคารพ! หากเราฝึกด้วยปืนลูกซอง (ซึ่งตอนนี้จำเป็นต้องประพฤติตัวเป็นองค์รวม) เราก็มีความผิดในการระลึกว่าเมื่อ ล่วงหน้า == 0ฟังก์ชัน "to stumble" กับ "zab'emo stub" อันนั้น:
ถ้า(prec!=0)(ตอนนี้คุณสามารถฝึกอย่างใจเย็น Ale є sche kіlka "kamintsіv", yakі mi ทันทีobіyemo
ในทางที่ดีขึ้น อย่างเช่น อนุภาคของปืนลูกซองกับเรา สมมุติว่า 41 และเราตั้งค่าให้ปัดเป็น 3 ตัวอักษร จากนั้นจึงใช้วิธี ความแม่นยำ, รับเศษส่วนของเราเป็นจำนวนเต็ม, vivede 41.0 , Tobto ต้องทำความสะอาดจุด
ในอีกทางหนึ่ง หากเศษส่วนของหมายเลขผลลัพธ์ปรากฏมากกว่า 3 ตัวอักษร วิธีการ ความแม่นยำบ่อยขึ้นเพื่อดูผลลัพธ์ของรูปแบบเลขชี้กำลัง Іz tsim tezh จะต้องเอาชนะ
ดังนั้นเราจึง "ล้าง" ผลลัพธ์หลังจากการเปลี่ยนแปลงสามครั้ง: precpart, precpart1і precpart2.
Precpart = (จำนวน(เศษส่วน)). ความแม่นยำ(prec)). toString(10 )
ตอนนี้ "สะอาด":
/* เช่นเดียวกับส่วนที่ยิง є */ถ้า (fractpart != "") ( /* จุด shukaєmo ta usuvaemo */ precpart1 = precpart แทนที่(".", "") /* มาดูกันว่าอะไรไม่เป็นเลขชี้กำลัง */ varplus = precpart1.lastIndexOf("e"); /* และวิธีชนะ є, */ถ้า (บวก > 0) /* Vismikuemo พร้อมรูท */ precpart2 = precpart1 สตริงย่อย(0, บวก); /* ไปในทิศทางอื่น */อื่น /* ไม่มีอะไรเปลี่ยนแปลง */ precpart2 = precpart1 /* จึงไม่มีปืนลูกซอง */อื่น /* จากนั้นแสดงศูนย์และต่ออายุจุด */ precpart2= "," + เตรียม. แทนที่("." , "" )พวกเขาชี้ให้ฉันดูในซองว่าสำหรับชิ้นส่วนที่ยิงในจำนวนโคมิมันเป็นไปไม่ได้ เราต้องใส่วิพากษ์นี้อีกครั้ง
) อื่น ( /* ดังนั้น prec ยังคงเท่ากับศูนย์ เพียงแค่แสดงแถวว่าง */ precpart2= "" ; ตัวแบ่ง = "" ; }І คอร์ดสุดท้าย:
Nr1 = e + ตัวแบ่ง + precpart2; ส่งคืนหมายเลข 1; )
ฟังก์ชั่นทั้งหมดอีกครั้ง:
ฟังก์ชัน toRussianString(prec) ( var a = "" , ข = "" c, d, e; ถ้า (prec == 0) var str = นี่ คงที่(0 ).toString(สิบ); อื่น var str = นี่ toString(สิบ); varnr1; var intpart, fractpaft, precpart, ตัวแบ่ง, dot = str LastIndexOf("." ); ฉัน; ถ้า (จุด< 0 ) { intpart = str; fractpart = "" ; ตัวแบ่ง = "" ;) อื่น ๆ (intpart=str. สตริงย่อย(0, จุด); เศษส่วน = str สตริงย่อย(จุด + 1, str. ความยาว); ตัวแบ่ง = "," ;) ถ้า (intpart. ความยาว> 3) ( สำหรับ (i=intpart.) ความยาว-3; ผม>=0; i-=3) (a = a + intpart. ย่อย(ผม, 3); ค= " " +ส่วนภายใน. ย่อย(0, ส่วนภายใน. ความยาว-ก. ความยาว); b=b+ " " +ส่วนภายใน. ย่อย(i, 3);) d = (b + c) แยก(" " ).ย้อนกลับ().toString().แทนที่(/,/g, " " ); ถ้า (ง. สตริงย่อย(0 , 1 ) == "&" ) e = ง. สตริงย่อย(6, ง. ความยาว-6); อื่น e = d สตริงย่อย(0, ง. ความยาว-6); ) อื่น ๆ e = intpart; if(prec!=0)(precpart=(Number(fractpart)). ความแม่นยำ(prec)). toString(10) if (fractpart != "") (precpart1 = precpart. แทนที่(".", "") var plus = precpart1.lastIndexOf("e"); ถ้า (บวก > 0) precpart2 = precpart1 สตริงย่อย(0, บวก); อื่น ๆ precpart2 = precpart1 ) อื่น ๆ precpart2 = "," + เตรียม. แทนที่("." , "" ) ) อื่น ๆ ( precpart2 = "" ; ตัวแบ่ง = "" ; ) nr1 = e + ตัวแบ่ง + precpart2; ส่งคืนหมายเลข 1; )ตอนนี้ฟังก์ชันนี้สามารถเรียกได้โดยวิธีการ
Var myNumber = เอกสาร 2569843359.6583521 เขียน(มายนัมเบอร์. toRussianString(3 ))
ผลลัพธ์:
คุณสามารถวางเมธอดและฟังก์ชันคอนสตรัคเตอร์ในไลบรารี - นี่คือไฟล์ .js ซึ่งสามารถเรียกได้จากโค้ดของหน้าเว็บ ในโลกของการเขียนเมธอดไปยังอ็อบเจ็กต์ต่างๆ มันเป็นไปได้ที่จะเรียงลำดับเมธอดและไฟล์ไลบรารีสำหรับอ็อบเจ็กต์เหล่านี้และจัดเรียงโดยใช้เมธอดเพิ่มเติม