Hướng dẫn dùng loga a trong PHP

Trong bài này mình sẽ hướng dẫn cách sử dụng hàm LOG10 trong MySQL thông qua cú pháp và ví dụ thực tế.

Hướng dẫn dùng loga a trong PHP

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Mô tả

Hàm LOG10 trả về logarit cơ số 10 của một số.

2. Cú pháp

Cú pháp của hàm LOG10 trong MySQL là:

Trong đó:

Bài viết này được đăng tại [free tuts .net]

number: Số để lấy logarit cơ số 10 của. Số phải lớn hơn 0.

Lưu ý:

  • Hàm LOG10 sẽ trả về NULL, nếu số nhỏ hơn hoặc bằng 0.

3. Version

Hàm LOG10 có thể được sử dụng trong các phiên bản sau của MySQL:

  • MySQL 5.7, MySQL 5.6, MySQL 5.5, MySQL 5.1, MySQL 5.0, MySQL 4.1, MySQL 4.0.3

4. Ví dụ

mysql> SELECT LOG10(1);
Ket qua: 0

mysql> SELECT LOG10(2);
Ket qua: 0.3010299956639812

mysql> SELECT LOG10(5.5);
Ket qua: 0.7403626894942439

mysql> SELECT LOG10(0);
Ket qua: NULL

Trong bài này mình sẽ hướng dẫn cách sử dụng hàm LOG10 trong MySQL thông qua cú pháp và ví dụ thực tế.

1. Mô tả

Hàm LOG10 trả về logarit cơ số 10 của một số.

2. Cú pháp

Cú pháp của hàm LOG10 trong MySQL là:

Bạn đang xem: Hàm LOG10 trong MySQL

Trong đó:

number: Số để lấy logarit cơ số 10 của. Số phải lớn hơn 0.

Lưu ý:

  • Hàm LOG10 sẽ trả về NULL, nếu số nhỏ hơn hoặc bằng 0.

3. Version

Hàm LOG10 có thể được sử dụng trong các phiên bản sau của MySQL:

  • MySQL 5.7, MySQL 5.6, MySQL 5.5, MySQL 5.1, MySQL 5.0, MySQL 4.1, MySQL 4.0.3

4. Ví dụ

mysql> SELECT LOG10(1);
Ket qua: 0

mysql> SELECT LOG10(2);
Ket qua: 0.3010299956639812

mysql> SELECT LOG10(5.5);
Ket qua: 0.7403626894942439

mysql> SELECT LOG10(0);
Ket qua: NULL

Đăng bởi: MyLop

Chuyên mục: Học Lập Trình

Back to top button

answer

65

Có lẽ:

$num = 245354;
$numlength = strlen((string)$num);

65 hữu ích 3 bình luận chia sẻ

answer

15

Câu trả lời được chấp nhận sẽ không hoạt động với những con số lớn. Cách tốt hơn để tính độ dài của bất kỳ số nào là gọi floor(log10($num) + 1)với một dấu kiểm cho 0.

$num = 12357;
echo $num !== 0 ? floor(log10($num) + 1) : 1; // prints 5

Nó có nhiều lợi thế. Nó nhanh hơn, bạn không thực hiện việc ép kiểu, nó hoạt động trên các số lớn, nó hoạt động với các hệ thống số khác nhau như bin, hex, oct.

Phương trình lôgarit với cơ số 10 sau đó làm cho tầng của nó và cộng thêm 1.

Giải pháp này có thể hoạt động độc lập trên cơ số, vì vậy nếu bạn muốn tính độ dài của nhị phân hoặc hex chỉ cần thay đổi cơ số của lôgarit.

Làm việc không cẩn thận

15 hữu ích 5 bình luận chia sẻ

answer

2

Giải pháp được chấp nhận đưa ra một vấn đề khi đánh giá các số âm.

Nó hoạt động với một số dương:

$num = 245354;
$numlength = strlen((string)$num);
// Result: 6

Nhưng với một số âm, dấu (-) được thêm vào số đếm:

$num = -245354;
$numlength = strlen((string)$num);
// Result: 7

Cách giải quyết nhanh chóng:

$num = -245354;
$numlength = strlen((string)abs($num));
// Result: 6

2 hữu ích 0 bình luận chia sẻ

answer

1

Cách thanh lịch hơn :)

ceil(log10($num));

1 hữu ích 1 bình luận chia sẻ

answer

1

Bạn cũng có thể sử dụng một số phép toán cơ bản!

$digits = (int)(log($num,10)+1) 

1 hữu ích 0 bình luận chia sẻ

answer

1

Một cách khác để tìm ra độ dài của một số trong các chữ số là chia phần nguyên của số đó cho 10 cho đến khi nó trở thành 0.

Thí dụ:

2021/10 = 202.1 
202/10 = 20.2 
20/10 = 2 
2/10 = 0.2

Mã:

function numberGetLength($number) {
     $count = 0;
     while (intval($number) > 0) {
        $number = intval($number) / 10;
        $count += 1;
     }
     return $count
}

1 hữu ích 0 bình luận chia sẻ

answer

0

Chỉ cần sử dụng một số phiên bản (int)(log($num,10)+1)không thành công cho 10, 100, 1000, v.v. Nó đếm số 10 là 1 chữ số, 100 là hai chữ số, v.v. Nó cũng không thành công với 0 hoặc bất kỳ số âm nào.
Nếu bạn phải sử dụng toán học (và số không âm), hãy sử dụng:
$numlength = (int)(log($num+1, 10)+1);

Hoặc đối với một giải pháp toán học đếm các chữ số bằng số dương HOẶC âm:
$numlength = ($num>=0) ? (int)(log($num+1, 10)+1) : (int)(log(1-$num, 10)+1);

Nhưng giải pháp strlen cũng nhanh như trong PHP.

0 hữu ích 0 bình luận chia sẻ

answer

0

Trong PHP, các loại được thiết lập và đoán một cách lỏng lẻo, nếu bạn muốn xem một thứ gì đó dưới dạng chuỗi nếu nó là một số nguyên , float và (tôi chưa thử điều này) bool thì @Gorjunav là câu trả lời chính xác nhất.

Đặt lại biến dưới dạng một chuỗi

$stringNum = (string) $num;

Sau đó, bạn có thể truy cập bất kỳ chuỗi liên quan nào bạn muốn với nó! Và ngược lại để thay đổi một chuỗi thành một int

$number = (int) $stringNum;

và như thế...

0 hữu ích 0 bình luận chia sẻ

answer

0

chỉ đếm giá trị số nguyên

  `";
        $count = 0; 
        while ($n1 != 0)  
        { 
            $n1 = $n1 / 10;
            $n1 = intval($n1);
            ++$count; 
        } 
        echo "The Digit in a Number: ".$count;
    }
    ?>`

0 hữu ích 0 bình luận chia sẻ

answer

0

echo strlen((string) abs($num)); // using **abs** it'll work with negative integers as well  

0 hữu ích 3 bình luận chia sẻ

answer

0

Đã thử nghiệm trong PHP 4.4.9 - 8.0.0

$array = array(-1, 0, -0, 1, 4, 9, 10, -10, 20, -20, 100, -100);
foreach( $array as $key => $num ){
    echo $key."\t{$num}\t=>\t".($num !== 0 ? floor(log10(abs($num)) + 1) : 1)."\n";
}
/* Output:
0   -1  =>  1
1   0   =>  1
2   0   =>  1
3   1   =>  1
4   4   =>  1
5   9   =>  1
6   10  =>  2
7   -10 =>  2
8   20  =>  2
9   -20 =>  2
10  100 =>  3
11  -100    =>  3
*/

0 hữu ích 0 bình luận chia sẻ

answer

0

Hàm sau hoạt động cho cả số nguyên hoặc số thực (hoạt động với PHP7 +):

function digitsCount($number): int
{
    $number = abs($number);
    $numberParts = explode(".", $number);

    return
        strlen($numberParts[0]) +
        (strlen($numberParts[1] ?? 0));
}

0 hữu ích 0 bình luận chia sẻ