Làm cách nào để xử lý các số có độ dài/độ chính xác tùy ý trong php?

php nhị phân thập lục phân số chính xác tùy ý base62 cơ sở crockford số lớn chuyển đổi cơ sở crockford-base32

  • Cập nhật17/12/2022
  • PHP

marius balcytis / toán học

Sao 3

  • Mã số
  • Vấn đề
  • Yêu cầu kéo

Thư viện PHP cho toán học chính xác tùy ý

phép toán php độ chính xác tùy ý bcmath bigdecimal

  • Cập nhật13/03/2019
  • PHP

Superbalist / tiền php

Sao 9

  • Mã số
  • Vấn đề
  • Yêu cầu kéo

Một thư viện tiền và tiền tệ để xử lý số học chính xác tùy ý

tiền php độ chính xác tùy ý bcmath superbalist thư viện tiền tệ php-money

  • Cập nhật ngày 11 tháng 7 năm 2022
  • PHP

felixdorn / sey

Sao 13

  • Mã số
  • Vấn đề
  • Yêu cầu kéo

Sey là một trình thông dịch toán học mạnh mẽ với độ chính xác tùy ý

php bcmath chính xác tùy ý

  • Cập nhật ngày 1 tháng 10 năm 2022
  • PHP

PrestaShop / số thập phân

Sao 16

  • Mã số
  • Vấn đề
  • Yêu cầu kéo

Triển khai hướng đối tượng của phép toán cơ bản với độ chính xác tùy ý, sử dụng BC Math nếu có

php thư viện php độ chính xác tùy ý bcmath hacktoberfest phụ thuộc lõi

  • Cập nhật26/10/2022
  • PHP

JordanRL / Fermat

Nhà tài trợ

Sao 61

  • Mã số
  • Vấn đề
  • Yêu cầu kéo

Một thư viện cung cấp các phép toán và thống kê cho các số có kích thước tùy ý

thống kê khoa học php phép toán lượng giác hàm ma trận bignum ma trận độ chính xác tùy ý số phức tính toán khoa học biginteger bigint bignumber tính toán ma trận chính xác phân phối poisson phân phối fermat gaussian php8

  • Cập nhật ngày 2 tháng 11 năm 2022
  • PHP

krowinski / bcmath-mở rộng

Sao 67

  • Mã số
  • Vấn đề
  • Yêu cầu kéo
  • thảo luận

Mở rộng thư viện php BCMath cho các chức năng bị thiếu như sàn, trần, tròn, abs, min, max, rand cho các số lớn. Cũng bọc các chức năng BCMath hiện có

toán tiền php toán độ chính xác tùy ý sàn số phức gói nhà soạn nhạc số thập phân rand bignumber abs ký hiệu khoa học ceil deche

Số dấu phẩy động (còn được gọi là "số float", "nhân đôi" hoặc "số thực") có thể được chỉ định bằng bất kỳ cú pháp nào sau đây

$a = 1.234;
$b = 1.2e3;
$c = 7E-10;
?>

chính thức

LNUM          [0-9]+
DNUM          ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*)
EXPONENT_DNUM [+-]?(({LNUM} | {DNUM}) [eE][+-]? {LNUM})

Kích thước của float phụ thuộc vào nền tảng, mặc dù tối đa là ~1. 8e308 với độ chính xác khoảng 14 chữ số thập phân là một giá trị phổ biến (định dạng IEEE 64 bit)

Cảnh báo

Số dấu phẩy động có độ chính xác hạn chế. Mặc dù nó phụ thuộc vào hệ thống, PHP thường sử dụng định dạng chính xác kép IEEE 754, định dạng này sẽ gây ra lỗi tương đối tối đa do làm tròn theo thứ tự 1. 11e-16. Các phép toán số học phi cơ bản có thể gây ra lỗi lớn hơn và tất nhiên, việc lan truyền lỗi phải được xem xét khi một số phép toán được gộp lại

Ngoài ra, các số hữu tỷ có thể biểu diễn chính xác dưới dạng số dấu phẩy động trong cơ số 10, chẳng hạn như 0. 1 hoặc 0. 7, không có biểu diễn chính xác dưới dạng số dấu phẩy động trong cơ sở 2, được sử dụng nội bộ, bất kể kích thước của phần định trị. Do đó, chúng không thể được chuyển đổi thành các đối tác nhị phân bên trong của chúng mà không làm giảm độ chính xác. Điều này có thể dẫn đến kết quả khó hiểu. ví dụ: sàn((0. 1+0. 7)*10) thường sẽ trả về 7 thay vì 8 như mong đợi, vì biểu diễn bên trong sẽ giống như 7. 9999999999999991118

Vì vậy, đừng bao giờ tin tưởng kết quả số thực cho chữ số cuối cùng và không so sánh trực tiếp các số có dấu phẩy động để lấy bình đẳng. Nếu cần độ chính xác cao hơn, các hàm toán học chính xác tùy ý và hàm gmp có sẵn

So sánh số float

Như đã lưu ý trong cảnh báo ở trên, việc kiểm tra các giá trị dấu phẩy động cho bằng nhau là một vấn đề, do cách chúng được biểu diễn bên trong. Tuy nhiên, có nhiều cách để so sánh các giá trị dấu phẩy động khắc phục những hạn chế này

Để kiểm tra sự bằng nhau của các giá trị dấu phẩy động, giới hạn trên của lỗi tương đối do làm tròn được sử dụng. Giá trị này được gọi là epsilon của máy hoặc làm tròn đơn vị và là sự khác biệt nhỏ nhất có thể chấp nhận được trong tính toán

$a và $b bằng 5 chữ số chính xác

$a = 1.23456789;
$b = 1.23456780;
$epsilon = 0.00001;

if(abs($a-$b) < $epsilon) {
    echo "true";
}
?>

NaN

Một số phép toán số có thể dẫn đến một giá trị được biểu thị bằng hằng số NAN. Kết quả này đại diện cho một giá trị không xác định hoặc không thể biểu diễn trong các phép tính dấu phẩy động. Bất kỳ so sánh lỏng lẻo hoặc nghiêm ngặt nào về giá trị này với bất kỳ giá trị nào khác, bao gồm cả chính nó, sẽ có kết quả là FALSE

Bởi vì NAN đại diện cho bất kỳ số lượng giá trị khác nhau nào, nên không nên so sánh NAN với các giá trị khác, kể cả chính nó và thay vào đó nên kiểm tra bằng cách sử dụng is_nan()

Làm thế nào để độ chính xác tùy ý làm việc?

Trong khoa học máy tính, số học có độ chính xác tùy ý, còn được gọi là số học bignum, số học bội số chính xác hoặc đôi khi là số học có độ chính xác vô hạn, chỉ ra rằng các phép tính được thực hiện trên các số có các chữ số là . .

Làm cách nào để hiển thị 2 chữ số sau số thập phân trong PHP?

Nếu bạn muốn hiển thị một số bằng ký hiệu tiếng Anh được làm tròn đến 2 chữ số thập phân, nhưng không có dấu phân cách hàng nghìn, bạn có thể viết như sau. $myNumber = 123456. 784321; . 78" echo number_format( $myNumber, 2, '. ', '' );

Làm cách nào để tính tổng các giá trị float trong PHP?

Hàm array_sum( ) là một hàm sẵn có của PHP. Hàm array_sum( ) tính tổng các giá trị trong một mảng và trả về tổng các giá trị trong một mảng dưới dạng số nguyên hoặc số float. Chức năng này đã được giới thiệu trong PHP 4. 0. .
$sum = mảng(13, 26, 39, 52);
print_r(mảng_sum($sum));

Làm cách nào để kiểm tra độ dài của một số nguyên trong PHP?

Trong PHP, bạn có thể lấy độ dài của một số nguyên theo các cách sau. .
Chuyển đổi thành chuỗi và gọi strlen() ;
Vòng lặp và loại bỏ các chữ số ở cuối;
Tính chiều dài toán học