Làm cách nào tôi có thể nhận được giá trị gấp đôi trong PHP?

Một thẻ đã tồn tại với tên chi nhánh được cung cấp. Nhiều lệnh Git chấp nhận cả tên thẻ và tên nhánh, vì vậy việc tạo nhánh này có thể gây ra hành vi không mong muốn. Bạn có chắc chắn muốn tạo nhánh này không?

Như chúng ta biết PHP không yêu cầu hoặc hỗ trợ định nghĩa kiểu rõ ràng trong khai báo biến. Tuy nhiên, bạn có thể buộc một biến được đánh giá là một loại nhất định bằng cách sử dụng kiểu truyền

Hãy thử ví dụ sau để hiểu cách thức hoạt động của nó

Bạn có thể sử dụng (int) hoặc (integer) để chuyển một biến thành số nguyên, sử dụng (float), (double) hoặc (real) để chuyển một biến thành float. Tương tự, bạn có thể sử dụng (string) để truyền một biến thành chuỗi, v.v.

Làm việc với các con số trong PHP có vẻ là một khái niệm tầm thường, nhưng nó có thể khá khó hiểu. Thoạt nhìn có vẻ dễ dàng vì PHP cung cấp chuyển đổi kiểu tự động. Ví dụ: bạn có thể gán một giá trị nguyên cho một biến và kiểu của biến đó sẽ là một số nguyên. Trên dòng tiếp theo, bạn có thể gán một chuỗi cho cùng một biến và loại sẽ thay đổi thành một chuỗi. Thật không may, chuyển đổi tự động này đôi khi có thể phá vỡ mã của bạn

Có rất nhiều loại cho các giá trị số. Trong hướng dẫn này, bạn sẽ tìm hiểu về số nguyên và số float trong PHP, cũng như các hàm có thể được sử dụng để xác định loại số mà chúng ta đang xử lý và chuyển đổi giữa chúng. Bạn cũng sẽ học cách chuyển đổi số nguyên và số float sang và từ các chuỗi số

Các loại số khác nhau trong PHP

số nguyên

Loại số cơ bản nhất trong PHP là số nguyên. Như bạn có thể đã biết, số nguyên là số không có phần thập phân. Ví dụ: 2 là một số nguyên và 235298 hoặc -235298 cũng vậy. Mặt khác, 2. 0 và 3. 58 là phao. Chúng ta sẽ thảo luận chi tiết hơn sau

Một điều quan trọng cần nhớ là một số không nhất thiết phải thuộc loại _______1_______95 nếu nó không có phần thập phân. Ví dụ, 


96 chính xác là 

97, nhưng loại kết quả này vẫn sẽ là 

98. Khi bạn nhân các số, kết quả cuối cùng sẽ là kiểu float nếu ít nhất một trong các toán hạng là số float. Số cuối cùng có phần thập phân hay không không quan trọng

Ngoài ra, giá trị tối đa mà một số nguyên có thể có trong PHP trên hệ thống của bạn có thể được lấy bằng cách sử dụng hằng số 


99. Giá trị có độ lớn lớn hơn giá trị được trả về bởi 

99 sẽ được lưu trữ dưới dạng số thực ngay cả khi giá trị đó trông giống số nguyên

Nói chung, bạn sẽ mong đợi kết quả của phép nhân hai biến loại _______1_______95 là loại ____1_______95. Tuy nhiên, nó không đúng trong trường hợp tràn. Phép nhân năm hoặc sáu số khác nhau có thể dễ dàng đưa bạn ra ngoài giới hạn của loại 


95. Ví dụ: kết quả của 
2
04 là số float trên hệ thống của tôi vì nó vượt quá giá trị của 

99, tức là 
2
06

Bạn có thể sử dụng hàm 

2
07 để kiểm tra xem một số có thuộc loại số nguyên hay không. Có hai bí danh của hàm này, được gọi là 
2
08 và 
2
09. Cả hai sẽ cho cùng một kết quả

phao nổi

Loại số phổ biến tiếp theo mà bạn sẽ xử lý là số float. Không giống như số nguyên, trong hầu hết các trường hợp chỉ đơn giản là số không có dấu thập phân, một số thuộc loại 


98 có thể được biểu diễn theo nhiều cách khác nhau. Các giá trị 
2
11, 
2
12, 
2
13 và 
2
14 đều là số thực

PHP sẽ tự động chuyển đổi một số thành loại 


98 bất cứ khi nào có số thập phân hoặc số rất lớn. Loại 

98 thường có thể lưu trữ các số có độ lớn xấp xỉ bằng 
2
17. Tuy nhiên, điều này phụ thuộc vào nền tảng

Giá trị 

2
17 có vẻ như là một giá trị rất lớn—và đó là. —nhưng số float có độ chính xác tối đa chỉ khoảng 14 chữ số. Bất kỳ số nào có nhiều chữ số hơn sẽ mất độ chính xác. Điều đó có nghĩa là bạn có thể lưu trữ một số lượng rất lớn, nhưng bạn sẽ không thể giữ thông tin về giá trị chính xác của nó—trong nhiều trường hợp, số float chỉ là giá trị gần đúng

Có hai hàm có thể được sử dụng để xác định xem giá trị bạn đang xử lý có phải là số float hay không. Các chức năng này là 

2
19 và 
2
20. Trên thực tế, 
2
20 chỉ là bí danh của 
2
19, vì vậy bạn có thể sử dụng bất kỳ bí danh nào trong số đó và nhận được kết quả tương tự

Vô cực và NaN

Có hai loại giá trị số nữa mà bạn có thể phải xử lý khi viết các chương trình liên quan đến toán học. Các giá trị này là vô cùng và 

2
23 (không phải số). Cả hai giá trị này đều cần một chút giải thích vì chúng khác với những gì bạn có thể mong đợi

Vô cực trong PHP khác với vô cực ngoài đời thực. Trong PHP, bất kỳ giá trị số nào trên xấp xỉ 

2
24 trên một nền tảng được coi là vô hạn. Vậy 
2
25 sẽ cho bạn 
2
26 trên 
2
27. Bạn có thể kiểm tra xem một giá trị số là hữu hạn hay vô hạn bằng cách sử dụng các hàm 
2
28 và 
2
29

Tương tự, 

2
23 là viết tắt của Không phải một Số, nhưng nó không kiểm tra xem một giá trị có phải là số hay không. Giá trị 
2
23 được sử dụng cho kết quả của các phép toán không thể thực hiện được trong toán học. Ví dụ: 
2
32 sẽ là 
2
23. Tương tự, 
2
34 cũng sẽ là 
2
23. Bạn có thể kiểm tra xem giá trị được trả về bởi một phép toán không phải là một số hay không bằng cách sử dụng hàm 
2
36

Chuỗi số trong PHP

Giống như PHP tự động thay đổi loại số khác nhau dựa trên cách giá trị của chúng được sử dụng hoặc gán, nó cũng có thể suy ra giá trị của các chuỗi số khác nhau để bạn chuyển đổi chúng thành số

Hàm 

2
37 có thể giúp bạn xác định xem một chuỗi hoặc biến có thực sự là số hay không. Hàm này sẽ trả về 
2
38 cho các số được viết bằng ký hiệu bát phân, nhị phân hoặc thập lục phân. Nó cũng sẽ trả về 
2
38 nếu các số được viết theo ký hiệu hàm mũ như 
2
40

Bắt đầu từ PHP 7. 0. 0, khi bạn chuyển một chuỗi tới 

2
37, nó chỉ trả về 
2
38 nếu chuỗi bao gồm một dấu tùy chọn, một số chữ số, một số thập phân tùy chọn và một phần số mũ tùy chọn. Điều này có nghĩa là một chuỗi số được viết ở định dạng thập lục phân hoặc nhị phân sẽ trả về 
2
43 từ PHP 7. 0. 0 trở đi

PHP sẽ truyền ngầm bất kỳ chuỗi số hợp lệ nào thành một số khi có nhu cầu. Các ví dụ sau đây sẽ giúp bạn hiểu rõ hơn về quy trình này

1

2
3
$num = "3258712" + 12380;
4
// Output: int(3271092)

5
var_dump($num);
6

0

1

2
// Output: int(3271092)


4
var_dump($num);

6

7

8

9
// Output: int(3271092)

2
1
var_dump($num);
2
3
2
4
2
5
2
6
2
7
2
8
var_dump($num);
3
0
3
1
3
2
3
3
3
4
3
5
var_dump($num);
3
7
3
8
3
9
$num = "3258712" + 12380;
0
$num = "3258712" + 12380;
1
$num = "3258712" + 12380;
2
var_dump($num);
$num = "3258712" + 12380;
4
$num = "3258712" + 12380;
5
$num = "3258712" + 12380;
6
$num = "3258712" + 12380;
7
$num = "3258712" + 12380;
8
$num = "3258712" + 12380;
9
var_dump($num);
4
1
4
2
4
3
4
4
4
5
4
6_

Như bạn có thể thấy, tất cả các chuỗi số hợp lệ đã được chuyển đổi thành các giá trị tương ứng trước khi thực hiện phép cộng hoặc các phép toán khác. Loại 

2
44 cuối cùng phụ thuộc vào giá trị cuối cùng của nó

Trong trường hợp cuối cùng, chuỗi thập lục phân 

2
45 không được chuyển đổi thành giá trị thập phân vì PHP 7 không coi đó là một chuỗi số hợp lệ

Truyền chuỗi và số float thành số nguyên

Thỉnh thoảng, bạn sẽ cần truyền một loại giá trị số này sang một loại giá trị khác. PHP có nhiều chức năng và kỹ thuật để làm như vậy. Hầu hết thời gian, việc chuyển đổi sẽ diễn ra ngầm định và bạn sẽ không phải lo lắng về điều đó. Tuy nhiên, nếu bạn phải thực hiện chuyển đổi một cách rõ ràng, các kỹ thuật được đề cập ở đây chắc chắn sẽ hữu ích

Bạn có thể sử dụng 

2
46 hoặc 
2
47 để chuyển đổi bất kỳ giá trị nào thành số nguyên. Trong trường hợp số float, các giá trị sẽ luôn được làm tròn về 0. Một cách khác để chuyển chuỗi và số thực sang số nguyên là sử dụng hàm 
2
48 . Cả 
2
46 và 
2
48 đều hoạt động theo cùng một cách

1

2
3
5
9
4
var_dump($num);
1
5
var_dump($num);
3
6
var_dump($num);
5

0

2
var_dump($num);
8

4
6
0

6
6
2

7
var_dump($num);
5

9
2
1
6
7
2
3
6
9
2
4

01
2
6
var_dump($num);
5
2
8

05
3
0
var_dump($num);
5
3
1
3
3
3
5
3
7

12
3
8

14
$num = "3258712" + 12380;
0

16
$num = "3258712" + 12380;
2
var_dump($num);
5
$num = "3258712" + 12380;
4
5
4

Bạn nên lưu ý rằng việc truyền chuỗi tràn thành số nguyên sẽ đặt giá trị cuối cùng thành giá trị số nguyên tối đa cho phép. Tuy nhiên, việc truyền một số float có giá trị lớn hơn giá trị số nguyên tối đa cho phép sẽ dẫn đến giá trị dao động giữa 

2
51 và 
2
06

Trong một số tình huống nhất định, bạn có thể cần phải xử lý những con số rất lớn mà không làm mất đi độ chính xác. Ví dụ: không thể có được kết quả chính xác của phép nhân của 

2
53 và 
2
54 bằng cách sử dụng toán tử 
2
55 . Nó sẽ cung cấp cho bạn 
2
56 sau khi chuyển đổi thả nổi. Tính toán câu trả lời thực tế, là 
2
57, sẽ yêu cầu sử dụng các thư viện như BCMath. BCMath hoạt động bằng cách lưu trữ các số dưới dạng chuỗi và thực hiện các phép tính số học trên chúng theo cách thủ công. Chỉ cần nhớ rằng nếu bạn sử dụng BCMath, bạn sẽ xử lý các chuỗi thay vì số nguyên và số float

Một số thư viện sẽ muốn bạn chỉ chuyển các số thuộc loại _______1_______95 vào phương thức của họ, nhưng bạn có thể vô tình cung cấp cho họ một giá trị float. Điều này có thể xảy ra vì giá trị có vẻ giống như một số nguyên vì nó không có phần thập phân. Điều này gần như chắc chắn sẽ dẫn đến lỗi nếu thư viện sử dụng hàm như 

2
59 để kiểm tra xem số đã truyền có thuộc loại số nguyên hay không. Trong những trường hợp như vậy, trước tiên, bạn nên truyền số đó cho int bằng cách sử dụng 
2
46 hoặc 
2
48 rồi chuyển số đó cho bất kỳ hàm hoặc phương thức nào của thư viện

Một ví dụ về tình huống như vậy có thể xảy ra khi bạn đang xử lý các hàm toán học như 

2
62, 
2
63, v.v.
2
62 và 
2
63 sẽ luôn trả về một số thực, ngay cả khi bạn chuyển cho chúng một số nguyên

1

2
3

25_______55_______

27_______57_______1_______29
6
1_______0

32

2

34

4
var_dump($num);

6

7
5
4

Một vấn đề với việc chuyển số float thành số nguyên là bạn sẽ mất phần thập phân của số. Điều này có thể hoặc có thể không được mong muốn. Trong những trường hợp như vậy, bạn có thể sử dụng các hàm như 

2
62 và chỉ chuyển số sang kiểu int nếu giá trị thực của nó bằng với giá trị được trả về bởi 
2
62

________50____1_______

2
3

44
4
5
___

47
6
1_______49

0

51

2

53

4

55

6

57

7_______1_______9_______57_______4

Giả sử bạn có một thư viện cho phép bạn thực hiện phép tính phân số và thư viện này sẽ đưa ra các ngoại lệ khi bạn chuyển một số cho phương thức 

2
68 không thuộc kiểu int của nó. Một loạt các thao tác có thể biến một số thành kiểu float ngay cả khi nó vẫn là một số nguyên trong giới hạn tối thiểu và tối đa của kiểu int. Sử dụng một cái gì đó giống như mã ở trên sẽ giúp bạn xử lý các trường hợp như vậy một cách dễ dàng

Mẹo để làm việc với các con số trong PHP

Bản thân các con số có thể lớn vô hạn, nhưng máy tính của chúng ta có bộ nhớ máy tính hạn chế. Điều này có thể dẫn đến các vấn đề khi làm việc với các số trong ngôn ngữ lập trình

Sự cố với số nguyên có kích thước cố định

Số lớn nhất bạn có thể lưu trữ dưới dạng số nguyên tiêu chuẩn trên máy 64 bit là 9223372036854775807. Bất kỳ phép tính nào có kết quả lớn hơn không thể được thực hiện với các số nguyên đơn giản và yêu cầu các giải pháp khác. Điều này có nghĩa là bạn không nên sử dụng số nguyên thông thường khi có khả năng kết quả có thể vượt quá các giới hạn này. Một tùy chọn cho số lớn hơn là sử dụng số dấu phẩy động. Tuy nhiên, chúng có nhược điểm riêng.  

Các vấn đề với số dấu phẩy động

Số dấu phẩy động rất phổ biến cho các tính toán hàng ngày. Tuy nhiên, bất cứ điều gì bạn làm với các số dựa trên việc so sánh chúng với nhau đều có thể dẫn đến các vấn đề. Điều này là do các số dấu phẩy động có độ chính xác hạn chế, vì vậy việc so sánh giữa chúng không phải lúc nào cũng hoàn hảo. Không chỉ vậy, nhưng máy tính là hệ thống nhị phân và hệ thống số của chúng tôi là số thập phân. Việc chuyển đổi giữa chúng không phải lúc nào cũng chính xác. Ví dụ: 0. 1 không thể được biểu diễn chính xác dưới dạng nhị phân—tương tự như cách 1/3 không thể được biểu diễn chính xác trong một số chữ số thập phân cố định. Luôn luôn có một số mất độ chính xác.  

Đối với các ứng dụng như kết xuất đồ họa hoặc trò chơi, việc mất độ chính xác này không phải là vấn đề. Tuy nhiên, đối với các ứng dụng ngân hàng hoặc thương mại điện tử, nó có thể tạo ra các vấn đề lớn. Một cách để tránh lỗi này là chuyển đổi các số bạn đang làm việc thành số nguyên. Ví dụ: bất kỳ thứ gì có giá 12 đô la. 01 có thể được lưu trữ với các số nguyên bên trong là 1201 xu. Luôn cân nhắc sử dụng số nguyên thông thường thay vì dấu phẩy động khi cần độ chính xác

Số chính xác không giới hạn

Cách tốt nhất để khắc phục những hạn chế được đề cập trong hai điểm trên là lưu trữ các số dưới dạng chuỗi. Một thư viện chính xác tùy ý như BCMath trong PHP có thể giúp bạn điều này. Nó đi kèm với nhiều chức năng hữu ích giúp bạn dễ dàng cộng, trừ, chia và nhân các số rất lớn mà không làm mất đi độ chính xác

1

2
3

65
4

67
5
6

65

0

72

2

4

75

6

77

7

9

80
2
1

82
2
3
2
4

85
2
6

87
2
8
3
0

90
3
1

92
3
3
5
4

Như bạn có thể thấy, hàm 

2
69 có thể đặt độ chính xác thành một giá trị tùy ý được xác định bởi tham số thứ ba

Tất nhiên, chức năng này phải trả phí—sử dụng BCMath chậm hơn đáng kể so với các kiểu số tích hợp sẵn trong PHP. Tốt nhất là sử dụng các loại số tích hợp trừ khi bạn cần thêm độ chính xác và phạm vi.  

Suy nghĩ cuối cùng

Hướng dẫn này đã đề cập đến các cách khác nhau trong đó PHP lưu trữ số và cách bạn có thể xác định xem một số có thuộc loại cụ thể hay không. Ví dụ: bạn có thể sử dụng các hàm như

2
59 và 
2
19 để xác định loại số và tiến hành tương ứng

Như bạn đã thấy trong hướng dẫn, PHP hỗ trợ chuyển đổi kiểu tự động. Điều này có nghĩa là đôi khi các số nguyên nhỏ hơn như 

2
72 hoặc 
2
73 có thể đã được lưu trữ dưới dạng số thực mà bạn không nhận ra. Việc sử dụng các số này trong các hàm chỉ chấp nhận các giá trị 

95 có thể dẫn đến ngoại lệ hoặc lỗi. Chúng tôi đã biết rằng một giải pháp đơn giản cho vấn đề này là chuyển một cách rõ ràng các số đó thành 

95 nếu chúng không có phần thập phân và giá trị của chúng không thay đổi khi truyền

Sau khi đọc hướng dẫn này, bạn sẽ có thể xác định loại số hoặc loại kết quả cuối cùng sau khi sử dụng nhiều thao tác với các hàm được xác định trước và cũng có thể chuyển chúng thành một loại cụ thể sau khi thực hiện một số kiểm tra

Như mọi khi, nếu bạn có bất kỳ câu hỏi hoặc mẹo bổ sung nào, bạn có thể nhận xét

Học PHP với một khóa học trực tuyến miễn phí

Nếu bạn muốn học PHP, hãy xem khóa học trực tuyến miễn phí của chúng tôi về các nguyên tắc cơ bản của PHP

Làm cách nào tôi có thể nhận được giá trị gấp đôi trong PHP?

Trong khóa học này, bạn sẽ học các nguyên tắc cơ bản của lập trình PHP. Bạn sẽ bắt đầu với những kiến ​​thức cơ bản, học cách PHP hoạt động và viết các hàm và vòng lặp PHP đơn giản. Sau đó, bạn sẽ xây dựng các lớp mã hóa để lập trình hướng đối tượng đơn giản (OOP). Đồng thời, bạn sẽ học tất cả các kỹ năng quan trọng nhất để viết ứng dụng cho web. bạn sẽ có cơ hội thực hành phản hồi các yêu cầu GET và POST, phân tích cú pháp JSON, xác thực người dùng và sử dụng cơ sở dữ liệu MySQL

Làm cách nào để khai báo biến kép trong PHP?

$var (đơn đô la) là một biến thông thường có tên var lưu trữ bất kỳ giá trị nào như chuỗi, số nguyên, float, v.v. $$var (đô la kép) là một biến tham chiếu lưu trữ giá trị của biến $ bên trong nó. .
$x = "abc";
$$x = 200;
echo $x. "
";.
echo $$x. "
";.
tiếng vang $ abc;

Làm cách nào để kiểm tra xem giá trị có gấp đôi PHP không?

Hàm is_double() kiểm tra xem một biến có thuộc kiểu float hay không. Hàm này là bí danh của is_float().

Có gấp đôi trong PHP không?

PHP hỗ trợ các kiểu dữ liệu sau. Chuỗi. số nguyên. Float (số dấu phẩy động - còn gọi là double)

Doubleval trong PHP là gì?

Hàm doubleval() trả về giá trị float của một biến . Hàm này là bí danh của floatval().