So sánh hai bit dữ liệu trong PHP khá đơn giản nhưng có những trường hợp đặc biệt khi so sánh dữ liệu đơn giản cần hơi khác một chút. Một trong những vấn đề phổ biến là so sánh các số float, một lỗi phổ biến là so sánh hai số float giống như cách bạn so sánh hai số nguyên hoặc hai chuỗi Show
Điều này là do cách PHP lưu trữ các số float (còn được gọi là số kép hoặc số thực) mang lại cho loại dữ liệu này độ chính xác rất hạn chế dẫn đến các số hơi sai lệch, để có giải thích sâu hơn, vui lòng đọc bài viết sau http. //php. net/manual/vi/ngôn ngữ. các loại. trôi nổi. php
Cách tốt nhất để so sánh hai số float để có được phép so sánh chính xác là chuyển đổi giá trị thành một loại dữ liệu thay thế, chẳng hạn như số nguyên, chuỗi hoặc sử dụng “bccomp” cho phép bạn so sánh 2 loại dữ liệu float với nhau theo độ chính xác mà bạn chỉ định ( equal So sánh hai số float đã cho và trả về một giá trị boolean mô tả xem chúng có bằng nhau không. greaterThan So sánh hai số float đã cho và trả về một giá trị boolean mô tả nếu số float đầu tiên lớn hơn số float thứ hai. greaterThanOrEqual So sánh hai số float đã cho và trả về một giá trị boolean mô tả nếu số float đầu tiên lớn hơn hoặc bằng số float thứ hai So sánh số dấu phẩy động if(abs($price_1 - $price_2) < 0.00001) { print '$price_1 and $price_2 are equal.'; } else { print '$price_1 and $price_2 are not equal.'; } ?> Ví dụ liên quan trong cùng thể loạiĐể so sánh các giá trị float trong PHP, mã như sau - Thí dụBản thử trực tiếp $b"; if($a == $b) { echo " đầu raĐiều này sẽ tạo ra đầu ra sau− 2.5 3.5 Both the values aren\'t equal Thí dụBây giờ chúng ta hãy xem một ví dụ khác - Bản thử trực tiếp $b"; if((round($a, 2)) == (round($b, 2))) { echo " đầu raĐiều này sẽ tạo ra ví dụ sau− 1.967 1.969 Both the values are equal!
Trong PHP, kích thước của một giá trị thả nổi phụ thuộc vào nền tảng. Do biểu diễn bên trong của các số dấu phẩy động, có thể có đầu ra không mong muốn trong khi thực hiện hoặc kiểm tra các giá trị dấu phẩy động cho bằng nhau. Ví dụ, xem chương trình sau PHP
True0 True1_______51_______ True3_______53_______ True5 True6_______5_______7 True8 True9 bool(true)0 bool(true)1 bool(true)2 True6_______5_______7 bool(true)5 True9 bool(true)0
bool(true)8 đầu ra. False
Giải trình. Đầu ra của mã này là Sai, điều này rất khó đoán nhưng trong PHP, giá trị1 không chính xác là 1. 6 tôi. e nó đến từ sự khác biệt giữa 8 và 6. 4 mà hóa ra lại là 1. 599999 đó là lý do tại sao tuyên bố này hóa ra là sai Làm thế nào để giải quyết vấn đề trên? chương trình 1. PHP
True0 True1 // Declare valuable and initialize it 2_______5_______1$value1 // Declare valuable and initialize it 5$value2 50_______7<?php 7True5 True6_______5_______7 $value1 2True9 bool(true)0 bool(true)1 bool(true)2 True6_______5_______7 $value1 9True9 bool(true)0
bool(true)8 đầu ra. True
Giải trình. Trong mã này, sử dụng hai số dấu phẩy động value1 và value2 cùng với epsilon. Bây giờ lấy hiệu tuyệt đối của các giá trị (giá trị 1 và giá trị 2) bằng cách sử dụng hàm được xác định trước có tên là abs(). Mã này sẽ đưa ra giá trị tuyệt đối nhưng câu hỏi đặt ra là tại sao chúng ta lại lấy giá trị tuyệt đối. Bạn có thể thấy rằng cả hai giá trị có cùng chữ số sau số thập phân cho đến giá trị chính xác 7. Điều này rất khó để hệ thống phân tích so sánh. Làm cách nào để so sánh hai giá trị float trong PHP?Giải thích. Trong mã này, sử dụng hai số dấu phẩy động value1 và value2 cùng với epsilon. Bây giờ lấy hiệu tuyệt đối của các giá trị (giá trị 1 và giá trị 2) bằng cách sử dụng hàm được xác định trước có tên là abs() . Mã này sẽ đưa ra giá trị tuyệt đối nhưng câu hỏi đặt ra là tại sao chúng ta lại lấy giá trị tuyệt đối.
Làm cách nào để kiểm tra xem một giá trị có nổi hay không trong PHP?Hàm is_float() kiểm tra xem một biến có thuộc kiểu float hay không. Hàm này trả về true(1) nếu biến là kiểu float, ngược lại trả về false.
Sự khác biệt giữa float và double trong PHP là gì?Không có sự khác biệt trong PHP . float , double hoặc real là cùng một kiểu dữ liệu. Ở cấp độ C, mọi thứ được lưu trữ dưới dạng gấp đôi. Kích thước thực vẫn phụ thuộc vào nền tảng.
Sự khác biệt giữa float và thập phân trong PHP là gì?Float lưu trữ giá trị gần đúng và thập phân lưu trữ giá trị chính xác . Tóm lại, các giá trị chính xác như tiền nên sử dụng số thập phân và các giá trị gần đúng như phép đo khoa học nên sử dụng số float. |