วิธีการปัดเศษตัวเลขของ JavaScript ลบ - จำนวนเต็มได้มากเกินไปจาก JavaScript? ไฟล์ย่อยจำนวนเต็ม js

โกลอฟนา / 2 นักอ่านสุดคูล

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 ทำให้พวกเขาขุ่นเคืองพวกเขายอมรับอาร์กิวเมนต์เดียวซึ่งหมายความว่าจำนวนหลักที่มีนัยสำคัญ (นั่นคือสาเหตุที่จำนวนหลักมีนัยสำคัญซึ่งได้รับชัยชนะในจำนวน) หรือเครื่องหมายหลังโคมิ (ตัวเลขหลังจุดที่สิบ) คือ มีความผิดในการรวมผล:
  1. หากอาร์กิวเมนต์ไม่ใช่ค่าสำหรับ toFixed() ค่าเริ่มต้นคือศูนย์ ซึ่งหมายความว่า 0 อักขระหลัง comi อาร์กิวเมนต์จะสูงสุด ซึ่งคือ 20
  2. เป็นอาร์กิวเมนต์ของการไม่มีงานสำหรับการตรวจสอบ ตัวเลขจะไม่มีการยืม
ให้ randNum = 6.25; randNum.toFixed(); > "6" Math.PI.toPrecision(1); > "3" randNum = 87.335; randNum.toFixed(2); > "87.33" randNum = 87.337; randNum.toPrecision(3); > "87.3"
สองวิธี 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 ให้ความเคารพกับค่าคงที่ที่เขียนด้วยตัวพิมพ์ใหญ่ ไม่ใช่สัญลักษณ์ CamelCase

Math.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 ซึ่งสามารถเรียกได้จากโค้ดของหน้าเว็บ ในโลกของการเขียนเมธอดไปยังอ็อบเจ็กต์ต่างๆ มันเป็นไปได้ที่จะเรียงลำดับเมธอดและไฟล์ไลบรารีสำหรับอ็อบเจ็กต์เหล่านี้และจัดเรียงโดยใช้เมธอดเพิ่มเติม

© 2022 androidas.ru - ทั้งหมดเกี่ยวกับ Android