ก่อนอื่นเขียนตัวอย่างเพื่อทำซ้ำปัญหา ฉันใช้สภาพแวดล้อมการทดสอบออนไลน์ JS [เปิด]
เขียนฟังก์ชัน displaynum () ใหม่
function displayNum () {var num = 22.77; การแจ้งเตือน (num + 10);}การคลิกปุ่มแสดงผลการแสดงแสดง 32.7699999999996 N DECIMALS ปรากฏขึ้น
ตัวเลขทั้งหมดจะไม่มีปรากฏการณ์นี้ยกเว้น 22.99 2.777 ดูเหมือนว่าตัวเลขเหล่านี้ไม่พิเศษ
ฉันตรวจสอบข้อมูลบางอย่าง หนึ่งคือข้อผิดพลาดในการคำนวณจุดลอยตัว JS และอีกอันเกี่ยวข้องกับการแปลงสุดท้ายของคอมพิวเตอร์เป็นการคำนวณไบนารี อย่างไรก็ตามทำไมทศนิยมทั้งหมดไม่ได้มีปรากฏการณ์นี้? ฉันไม่รู้ในขณะนี้ ฉันจะลึกลงไปถ้าฉันมีเวลา
ตอนนี้มีวิธีแก้ปัญหาสองวิธี สิ่งแรกคือการใช้วิธี JS .Tofixed (N) เพื่อรับทศนิยม N-Digit โดยตรง โดยส่วนตัวแล้วฉันคิดว่าวิธีนี้จะมีปัญหาบางอย่างในความแม่นยำของข้อมูล หากข้อกำหนดความถูกต้องของข้อมูลไม่สูงคุณสามารถใช้งานได้ วิธีที่สองคือการเขียนวิธีการดำเนินงาน JS ของคุณเอง
ต่อไปนี้เป็นฟังก์ชั่นเพิ่มเติมที่กำหนดเอง การเพิ่มวิธีนี้จะหลีกเลี่ยงปัญหาข้างต้น
ฟังก์ชั่น addnum (num1, num2) {var sq1, sq2, m; ลอง {sq1 = num1.toString (). แยก (".") [1] .length;} catch (e) {sq1 = 0;} ลอง {sq2 = num2.tostring () catch (e) {sq2 = 0;} m = math.pow (10, math.max (sq1, sq2)); return (num1 * m + num2 * m) / m;}แน่นอนว่ามันสามารถเขียนเป็นการแจ้งเตือน ((num * 3+10 * 3) /3); ด้วยวิธีนี้จะไม่มีทศนิยมใน n
การแจ้งเตือน ((num * 3+10 * 3) /3); และการแจ้งเตือน (num+10); แตกต่างจากการแจ้งเตือน (NUM+10); สองวิธีในการเขียนคอมพิวเตอร์เพื่อแปลงเป็นการดำเนินการไบนารีที่ชั้นล่าง บางทีนี่อาจเป็นเหตุผลสำหรับปัญหาข้างต้น
บทความข้างต้นเกี่ยวกับทศนิยม JS คำนวณจุดทศนิยมและการแสดงทศนิยมหลายครั้งคือเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่าคุณจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น