GoGPT Best VPN GoSearch

Biểu tượng yêu thích OnWorks

perlnumber - Trực tuyến trên đám mây

Chạy perlnumber trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks qua Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS

Đây là perlnumber lệnh có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS

CHƯƠNG TRÌNH:

TÊN


perlnumber - ngữ nghĩa của số và các phép toán số trong Perl

SYNOPSIS


$ n = 1234; # số nguyên thập phân
$ n = 0b1110011; # số nguyên nhị phân
$ n = 01234; # số nguyên bát phân
$ n = 0x1234; # số nguyên thập lục phân
$ n = 12.34e-56; # ký hiệu mũ
$ n = "-12.34e56"; # số được chỉ định dưới dạng chuỗi
$ n = "1234"; # số được chỉ định dưới dạng chuỗi

MÔ TẢ


Tài liệu này mô tả cách Perl xử lý nội bộ các giá trị số.

Cơ sở quá tải của nhà điều hành Perl hoàn toàn bị bỏ qua ở đây. Người vận hành quá tải
cho phép các hành vi do người dùng xác định đối với các số, chẳng hạn như các hoạt động trên
số nguyên, số dấu phẩy động với độ chính xác tùy ý, các phép toán trên "kỳ lạ"
các số chẳng hạn như số học mô-đun hoặc số học p-adic, v.v. Xem quá tải cho
chi tiết.

Lưu trữ số


Perl có thể biểu diễn nội bộ các số theo 3 cách khác nhau: dưới dạng số nguyên gốc, dưới dạng gốc
số dấu phẩy động và dưới dạng chuỗi thập phân. Các chuỗi thập phân có thể có một cấp số nhân
phần ký hiệu, như trong "12.34e-56". Native ở đây có nghĩa là "một định dạng được hỗ trợ bởi trình biên dịch C
được sử dụng để xây dựng perl ".

Thuật ngữ "gốc" không hoàn toàn có nghĩa khi chúng ta nói về số nguyên gốc, vì nó
khi các số dấu phẩy động riêng có liên quan. Hàm ý duy nhất của thuật ngữ
"gốc" trên số nguyên là giới hạn cho giá trị tối đa và giá trị true được hỗ trợ tối thiểu
các đại lượng tích phân gần với lũy thừa của 2. Tuy nhiên, phao "gốc" có hầu hết
hạn chế cơ bản: chúng có thể chỉ đại diện cho những con số tương đối
biểu diễn "ngắn" khi được chuyển đổi thành phân số nhị phân. Ví dụ: 0.9 không được
được đại diện bởi một float gốc, vì phân số nhị phân cho 0.9 là vô hạn:

binary0.1110011001100 ...

với dãy số 1100 lặp đi lặp lại nhiều lần. Ngoài hạn chế này,
số mũ của số nhị phân cũng bị hạn chế khi nó được biểu diễn dưới dạng
số điểm. Trên phần cứng thông thường, các giá trị dấu phẩy động có thể lưu trữ các số lên đến 53
chữ số nhị phân và với số mũ nhị phân từ -1024 đến 1024. Trong hệ thập phân
biểu diễn này gần với 16 chữ số thập phân và số mũ thập phân trong phạm vi
-304..304. Kết quả của tất cả những điều này là Perl không thể lưu trữ một số như
12345678901234567 dưới dạng số dấu phẩy động trên các kiến ​​trúc như vậy mà không bị mất
thông tin.

Tương tự, các chuỗi thập phân chỉ có thể đại diện cho những số có số thập phân hữu hạn
sự bành trướng. Là chuỗi và do đó có độ dài tùy ý, không có giới hạn thực tế cho
số mũ hoặc số chữ số thập phân của những số này. (Nhưng hãy nhận ra rằng những gì chúng ta đang
thảo luận về các quy tắc chỉ là gắn trong số những con số này. Thực tế là bạn có thể lưu trữ
những con số "lớn" như vậy không có nghĩa là hoạt động trên những con số này sẽ sử dụng tất cả
các chữ số có nghĩa. Xem "Toán tử số và chuyển đổi số" để biết chi tiết.)

Trên thực tế, các số được lưu trữ ở định dạng số nguyên gốc có thể được lưu trữ trong
dạng gốc hoặc ở dạng gốc không dấu. Do đó, các giới hạn cho số Perl được lưu trữ dưới dạng
số nguyên gốc thường sẽ là -2 ** 31..2 ** 32-1, với các sửa đổi thích hợp trong
trường hợp số nguyên 64-bit. Một lần nữa, điều này không có nghĩa là Perl chỉ có thể thực hiện các hoạt động trên
số nguyên trong phạm vi này: có thể lưu trữ nhiều số nguyên khác trong dấu phẩy động
định dạng.

Tính tổng, các giá trị số Perl chỉ có thể lưu trữ những số có số thập phân hữu hạn
mở rộng hoặc mở rộng nhị phân "ngắn".

Numeric khai thác số chuyển đổi


Như đã đề cập trước đó, Perl có thể lưu trữ một số ở bất kỳ một trong ba định dạng nào, nhưng hầu hết
các toán tử thường chỉ hiểu một trong các định dạng đó. Khi một giá trị số được chuyển
như một đối số cho một toán tử như vậy, nó sẽ được chuyển đổi thành định dạng được hiểu bởi
nhà điều hành.

Có thể có sáu chuyển đổi như vậy:

số nguyên gốc -> dấu phẩy động tự nhiên (*)
số nguyên gốc -> chuỗi thập phân
điểm gốc nổi -> số nguyên gốc (*)
điểm_điểm gốc -> chuỗi thập phân (*)
chuỗi thập phân -> số nguyên gốc
chuỗi thập phân -> dấu phẩy động riêng (*)

Các chuyển đổi này được điều chỉnh bởi các quy tắc chung sau:

· Nếu số nguồn có thể được biểu diễn ở dạng đích, thì biểu diễn đó là
đã sử dụng.

· Nếu số nguồn nằm ngoài giới hạn có thể biểu diễn trong biểu mẫu đích, a
đại diện của giới hạn gần nhất được sử dụng. (Mất of thông tin)

· Nếu số nguồn nằm giữa hai số có thể biểu diễn ở dạng đích, a
đại diện của một trong những số này được sử dụng. (Mất of thông tin)

· Trong "dấu phẩy động gốc -> số nguyên gốc" chuyển đổi độ lớn của kết quả
nhỏ hơn hoặc bằng độ lớn của nguồn. ("Làm tròn đến số không".)

· Nếu không thể thực hiện chuyển đổi "chuỗi thập phân -> số nguyên gốc" mà không bị mất
thông tin, kết quả tương thích với chuỗi chuyển đổi "decimal_string ->
native_floating_point -> native_integer ". Đặc biệt, việc làm tròn số rất thiên vị
thành 0, mặc dù một số như "0.99999999999999999999" có cơ hội được làm tròn thành
1.

SỰ HẠN CHẾ: Các chuyển đổi được đánh dấu bằng "(*)" ở trên liên quan đến các bước do C thực hiện
trình biên dịch. Đặc biệt, các lỗi / tính năng của trình biên dịch được sử dụng có thể dẫn đến hỏng một số
của các quy tắc trên.

Hương of Perl số hoạt động


Các phép toán perl nhận đối số số sẽ xử lý đối số đó theo một trong bốn
cách: họ có thể buộc nó ở một trong các định dạng số nguyên / nổi / chuỗi hoặc chúng có thể hoạt động
khác nhau tùy thuộc vào định dạng của toán hạng. Buộc một giá trị số thành một
định dạng cụ thể không thay đổi số được lưu trữ trong giá trị.

Tất cả các toán tử cần một đối số ở định dạng số nguyên coi đối số như trong
số học mô-đun, ví dụ: "mod 2 ** 32" trên kiến ​​trúc 32 bit. "sprintf"% u ", -1"
do đó cung cấp kết quả giống như "sprintf"% u ", ~ 0".

Toán tử số học
Toán tử nhị phân "+" "-" "*" "/" "%" "==" "! =" ">" "<" "> =" "<=" Và một ngôi
toán tử "-" "abs" và "-" sẽ cố gắng chuyển đổi các đối số thành số nguyên. Nếu cả hai
có thể chuyển đổi mà không mất độ chính xác và hoạt động có thể được thực hiện
mà không làm mất độ chính xác thì kết quả số nguyên được sử dụng. Nếu không, các đối số là
được chuyển đổi sang định dạng dấu phẩy động và kết quả dấu phẩy động được sử dụng. Bộ nhớ đệm
chuyển đổi (như được mô tả ở trên) có nghĩa là chuyển đổi số nguyên không ném
đi phần phân số trên số dấu phẩy động.

++ "++" hoạt động như các toán tử khác ở trên, ngoại trừ nếu nó là một chuỗi khớp với
định dạng "/ ^ [a-zA-Z] * [0-9] * \ z /" gia số chuỗi được mô tả trong perlop được sử dụng.

Toán tử số học trong quá trình "sử dụng số nguyên"
Trong phạm vi nơi "sử dụng số nguyên;" có hiệu lực, gần như tất cả các toán tử được liệt kê ở trên sẽ
buộc (các) đối số của chúng ở định dạng số nguyên và trả về kết quả là số nguyên. Các
các ngoại lệ, "abs", "++" và "-", không thay đổi hành vi của chúng với "use integer;"

Các toán tử toán học khác
Các toán tử như "**", "sin" và "exp" buộc các đối số ở định dạng dấu phẩy động.

Toán tử bitwise
Các đối số được buộc ở định dạng số nguyên nếu không phải là chuỗi.

Toán tử bitwise trong "sử dụng số nguyên"
buộc các đối số ở định dạng số nguyên. Đồng thời chuyển hoạt động nội bộ sử dụng ký
số nguyên thay vì không dấu mặc định.

Toán tử mong đợi một số nguyên
buộc đối số ở định dạng số nguyên. Điều này có thể áp dụng cho phần thứ ba và
đối số thứ tư của "sysread", chẳng hạn.

Toán tử mong đợi một chuỗi
buộc đối số vào định dạng chuỗi. Ví dụ: điều này có thể áp dụng cho "printf
"% s", $ value ".

Mặc dù việc buộc một đối số vào một dạng cụ thể không làm thay đổi số được lưu trữ, Perl
ghi nhớ kết quả của những chuyển đổi như vậy. Đặc biệt, mặc dù lần chuyển đổi đầu tiên như vậy
có thể tốn nhiều thời gian, các thao tác lặp đi lặp lại sẽ không cần thực hiện lại chuyển đổi.

Sử dụng perlnumber trực tuyến bằng các dịch vụ onworks.net


Máy chủ & Máy trạm miễn phí

Tải xuống ứng dụng Windows & Linux

Lệnh Linux

Ad




×
quảng cáo
❤️Mua sắm, đặt phòng hoặc mua tại đây — không mất phí, giúp duy trì các dịch vụ miễn phí.