Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

การเปรียบเทียบค่าทศนิยมใน PHP


ใน PHP การทดสอบค่าทศนิยมเพื่อความเท่าเทียมกันนั้นเป็นปัญหา เนื่องจาก PHP ล้มเหลวเมื่อตรวจสอบว่าจำนวนทศนิยมหนึ่งเท่ากับอีกจำนวนหนึ่งหรือไม่ แม้ว่าตัวเลขทศนิยมดูเหมือนจะมีค่าเท่ากัน แต่จริง ๆ แล้วไม่จำเป็นต้องเหมือนกัน ดังนั้นในบทความนี้จะแสดงให้เห็นถึงปัญหาที่เรากำลังเผชิญในการเปรียบเทียบเลขทศนิยมและขั้นตอนต่างๆ เพื่อหลีกเลี่ยงปัญหานี้

ตัวอย่าง

มาทดสอบกันโดยใช้ตัวอย่างง่ายๆ:

<ก่อน>

เอาต์พุต:

a และ b ไม่เหมือนกัน

คำอธิบาย:

ในโค้ดนี้ เงื่อนไข else จะถูกดำเนินการแทนเงื่อนไข if แม้ว่า $a และ $b จะเหมือนกันก็ตาม เนื่องมาจากคุณลักษณะของค่าทศนิยมที่แสดงไว้ภายใน มาพูดถึงกรณีต่างๆ ใน ​​PHP เพื่อหลีกเลี่ยงปัญหานี้แบบเรียลไทม์

กรณีที่ 1:

สาธิตการเปรียบเทียบค่าทศนิยมโดยใช้ผลต่างน้อยที่สุดในการคำนวณในระบบคอมพิวเตอร์

ตัวอย่าง:

<ก่อน>

ผลลัพธ์:

จริง

คำอธิบาย:

ที่นี่เราใช้ตัวแปรจุดลอยตัวสองตัว val1 และ val2 ควบคู่ไปกับ epsilon จากนั้นเราจะนำความแตกต่างที่แน่นอนของตัวแปร (val1 และ val2) โดยใช้ฟังก์ชันดั้งเดิมที่ชื่อว่า abs() รหัสนี้จะให้ค่าสัมบูรณ์แก่เรา แต่คำถามคือทำไมเราจึงใช้ค่าสัมบูรณ์ คำตอบคือ เราจะเห็นได้ว่าทั้งสองค่ามีตัวเลขหลังทศนิยมเหมือนกันจนถึงค่าความแม่นยำ 5 ซึ่งยากสำหรับ PHP ในการวิเคราะห์การเปรียบเทียบ

กรณีที่ 2:

การใช้ฟังก์ชัน round()

<ก่อน>

ผลลัพธ์:

บูล(จริง)

คำอธิบาย:

ที่นี่เราใช้ตัวแปรจุดลอยตัวสองตัว val1 และ val2 จากนั้น เรากำลังใช้ฟังก์ชันที่กำหนดไว้ล่วงหน้าที่ชื่อว่า round () ซึ่งปัดเศษค่าทศนิยมออกเป็นทศนิยมสองตำแหน่งแล้วเปรียบเทียบ เราใช้ฟังก์ชัน round() ที่กำหนดไว้ล่วงหน้าเพื่อให้ได้ผลลัพธ์ที่คาดหวังในวิธีที่ถูกต้อง