Radix หมายถึงอะไร? ทำไมเราถึงต้องการ?
parseInt(10, radixValue);
Radix หมายถึงอะไร? ทำไมเราถึงต้องการ?
parseInt(10, radixValue);
คำตอบ:
คุณอาจไม่ต้องการแยกวิเคราะห์จำนวนเต็มเป็นเลขฐาน 10 เสมอไปดังนั้นการระบุเลขฐานจะช่วยให้คุณระบุระบบตัวเลขอื่นได้
radix คือจำนวนค่าของตัวเลขหลักเดียว เลขฐานสิบหกจะเป็น 16 ฐานแปดเป็น 8 ไบนารีจะเป็น 2 และอื่น ๆ ...
ในparseInt()
ฟังก์ชั่นนี้มีหลายสิ่งที่คุณสามารถทำได้เพื่อบอกใบ้รัศมีโดยไม่ต้องระบุ สิ่งเหล่านี้สามารถต่อต้านคุณได้หากผู้ใช้ป้อนสตริงที่ตรงกับกฎข้อใดข้อหนึ่ง แต่ไม่ได้มีความหมายอย่างชัดแจ้ง ตัวอย่างเช่น:
// Numbers with a leading 0 used a radix of 8 (octal) before ECMAScript 5.
// These days, browsers will treat '0101' as decimal.
var result = parseInt('0101');
// Numbers that start with 0x use a radix of 16 (hexidecimal)
var result = parseInt('0x0101');
// Numbers starting with anything else assumes a radix of 10
var result = parseInt('101');
// Or you can specify the radix, in this case 2 (binary)
var result = parseInt('0101', 2);
parseInt('0101')
ตอนนี้กลับ101
มา เบราว์เซอร์ที่แตกต่างกันอาจมีพฤติกรรมที่แตกต่างกัน ใส่เลขฐานเสมอเพื่อให้ได้ผลลัพธ์ที่เชื่อถือได้
parseInt(x, 0)
เหตุผลบางอย่างที่ฉันจำไม่ได้ในตอนนี้ .. นี่เท่ากับparseInt(x, 10)
ฉันสงสัยว่าตอนนี้ ...
เนื่องจากหากคุณมีหมายเลขสตริงเช่น0700
และต้องการให้ผลลัพธ์เป็นจำนวนเต็ม700
คุณต้องแจ้งparseInt()
ว่าเป็นเลขฐานสิบแทนที่จะเป็นฐานแปด
console.log(parseInt("0700"));
// 448
// I really wanted decimal (base 10)
console.log(parseInt("0700", 10));
// 700
// What is this? Binary, Decimal, Octal?
console.log(parseInt("0110"));
// 72
// as binary
console.log(parseInt("0110", 2));
// 6
0o
แทน0
Radix เป็นฐานของระบบตัวเลข ระบบตัวเลขมีจำนวนไม่ จำกัด แต่ระบบที่คนส่วนใหญ่คุ้นเคยคือฐาน 10 (ฐานสิบ) และฐาน 2 (ไบนารี)
ค่าตัวเลขสามารถตีความได้แตกต่างกันในฐานต่างๆ ตัวอย่างเช่นเลข 10 ในไบนารีสามารถแสดงเป็น 2 ในฐานสิบ
ในกรณีของparseInt()
การใช้รัศมีช่วยให้คุณระบุฐานที่จะใช้ โดยค่าเริ่มต้นจะใช้รัศมี 10
อย่างไรก็ตามควรระบุรัศมีเสมอแม้ว่าจะใช้ฐาน 10 ก็ตามให้พิจารณากรณีของ
parseInt("010")
// ส่งกลับ 8
เมื่อมองแวบแรกคุณอาจคาดหวังว่าคำสั่งจะส่งกลับ 10 การใช้ radix อย่างชัดเจนจะช่วยหลีกเลี่ยงความสับสน:
parseInt("010", 10)
// ผลตอบแทน: 10
radix คือเลขฐานของระบบตัวเลข: http://en.wikipedia.org/wiki/Radix
โดยปกติคุณจะต้องระบุรัศมีถ้าคุณต้องการให้แตกต่างจาก 10 โดยเฉพาะอย่างยิ่ง (จากhttp://www.w3schools.com/jsref/jsref_parseInt.asp ):
หากไม่ใส่พารามิเตอร์ radix JavaScript จะถือว่าสิ่งต่อไปนี้:
ถ้าสตริงขึ้นต้นด้วย "0x" เลขฐานสิบหกคือ 16 (เลขฐานสิบหก) ถ้าสตริงขึ้นต้นด้วย "0" เลขฐานแปดจะเป็น 8 (ฐานแปด) คุณลักษณะนี้เลิกใช้แล้วหากสตริงขึ้นต้นด้วยค่าอื่น ๆ รัศมีคือ 10 (ทศนิยม)
เพียงเพิ่มข้อมูลเพิ่มเติมที่ตอบคำถามได้อย่างชัดเจน:
หากไม่ได้กำหนด radix หรือ 0 (หรือไม่มี) JavaScript จะถือว่าสิ่งต่อไปนี้:
ที่มา: MDN parseInt ()
มันเป็นเพียงความคิดเห็นของฉัน แต่ความคิดที่ว่า "เราจำเป็นต้องใช้ radix" นั้นล้าสมัยไปอย่างรวดเร็ว ปัญหานี้เกิดขึ้นจริงเมื่อไม่นานมานี้เนื่องจากผู้คนที่อยู่นอกโลกไอทีมักจะไม่ใช้สัญลักษณ์ตัวเลขอื่นที่ไม่ใช่ทศนิยมและมักจะให้ตัวเลขทศนิยมที่เป็นศูนย์เช่น "010" แต่เนื่องจาก ECMAScript 6 เลขฐานแปดใน JS นำหน้าด้วย "0o" และไม่ใช่แค่ "0" เหมือนใน ECMAScript 5 และ 3 ดังนั้นหากคุณไม่กำหนดเป้าหมายตระกูล IE (ซึ่งไม่ใช่สถานการณ์ที่หายากในตอนนี้) คุณสามารถข้าม radix ได้ อย่างปลอดภัย.
พารามิเตอร์ radix ใช้เพื่อระบุระบบตัวเลขที่จะใช้ตัวอย่างเช่นเลขฐาน 16 (เลขฐานสิบหก) บ่งชี้ว่าควรแยกวิเคราะห์ตัวเลขในสตริงจากเลขฐานสิบหกเป็นเลขฐานสิบ
หากไม่ใส่พารามิเตอร์ radix JavaScript จะถือว่าสิ่งต่อไปนี้:
ถ้าสตริงขึ้นต้นด้วย "0x" เลขฐานสิบหกคือ 16 (เลขฐานสิบหก)
ถ้าสตริงขึ้นต้นด้วย "0" เลขฐานแปดจะเป็น 8 (ฐานแปด) ฟีเจอร์นี้เลิกใช้งานแล้ว
ถ้าสตริงเริ่มต้นด้วยค่าอื่น ๆ รัศมีคือ 10 (ทศนิยม)
ที่มาW3Schools
อะไรคือสิ่งที่สมุฎฐานใน paseInt ()?
parseInt()
ฟังก์ชั่นแยกวิเคราะห์สตริงและกลับจำนวนเต็ม มันต้องใช้เวลาอาร์กิวเมนต์ที่สองสำหรับRadixซึ่งระบุฐานของตัวเลขในสตริง Radixสามารถเป็นจำนวนเต็มระหว่างและ2
36
การเรียกใช้ฟังก์ชันดูเหมือน (ไวยากรณ์):
parseInt(string, radix);
ตัวอย่างบางส่วนเพื่อชี้แจงแนวคิดของรัศมี
ตัวอย่างที่ 1:
var a = parseInt("11", 2);
กี่ตัวแปรบอกว่า "11" ที่อยู่ในระบบเลขฐานสองหรือฐาน 2 ดังนั้นตัวอย่างนี้จะแปลงสตริง "11" เป็นจำนวนเต็ม 3
ตัวอย่างที่ 2:
var a = parseInt("10011", 16);
ที่นี่radixจะบอกparseInt()
ว่านั่น10011
คือเลขฐานสิบหกและด้วยเหตุนี้ในจำนวนเต็มจึงถูกแปลงเป็น65553
โดยทั่วไปเรื่องสั้นสั้นอาร์กิวเมนต์radixจะบอกparseInt()
ว่าสตริงที่ส่งผ่านเป็นพารามิเตอร์ที่ 1 เป็นของระบบใดระบบหนึ่ง (ไบนารีเลขฐานสิบหก ฯลฯ ) และจำเป็นต้องแปลงเป็นจำนวนเต็มเป็นผลิตภัณฑ์สุดท้าย