Hướng dẫn php check if number has decimals - php kiểm tra xem số có số thập phân không

Tôi cần kiểm tra PHP nếu người dùng nhập số thập phân (cách chúng tôi, với dấu thập phân: X.XXX)

Bất kỳ cách đáng tin cậy để làm điều này?

Hướng dẫn php check if number has decimals - php kiểm tra xem số có số thập phân không

Uwe keim

38.8K56 Huy hiệu vàng174 Huy hiệu bạc286 Huy hiệu Đồng56 gold badges174 silver badges286 bronze badges

Đã hỏi ngày 21 tháng 7 năm 2011 lúc 7:22Jul 21, 2011 at 7:22

Hướng dẫn php check if number has decimals - php kiểm tra xem số có số thập phân không

CodevirtuosocodevirtuosoCodeVirtuoso

6.13012 Huy hiệu vàng44 Huy hiệu bạc62 Huy hiệu Đồng12 gold badges44 silver badges62 bronze badges

6

Bạn có thể nhận được hầu hết những gì bạn muốn từ IS_FLOAT, nhưng nếu bạn thực sự cần biết liệu nó có số thập phân trong đó hay không, chức năng của bạn ở trên không xa (mặc dù ngôn ngữ sai):

function is_decimal( $val )
{
    return is_numeric( $val ) && floor( $val ) != $val;
}

Đã trả lời ngày 21 tháng 7 năm 2011 lúc 7:28Jul 21, 2011 at 7:28

Cwallenpolecwallenpoolecwallenpoole

77.9K26 Huy hiệu vàng126 Huy hiệu bạc164 Huy hiệu đồng26 gold badges126 silver badges164 bronze badges

7

Nếu bạn muốn "10,00" trả về câu trả lời của Cheon Night Owl

Nếu bạn muốn biết liệu số thập phân có giá trị bạn có thể sử dụng câu trả lời này không.

Hoạt động với tất cả các loại (int, float, chuỗi)(int, float, string)

if(fmod($val, 1) !== 0.00){
    // your code if its decimals has a value
} else {
    // your code if the decimals are .00, or is an integer
}

Examples:

(fmod(1.00,    1) !== 0.00)    // returns false
(fmod(2,       1) !== 0.00)    // returns false
(fmod(3.01,    1) !== 0.00)    // returns true
(fmod(4.33333, 1) !== 0.00)    // returns true
(fmod(5.00000, 1) !== 0.00)    // returns false
(fmod('6.50',  1) !== 0.00)    // returns true

Explanation:

if(fmod($val, 1) !== 0.00){
    // your code if its decimals has a value
} else {
    // your code if the decimals are .00, or is an integer
}
7 Trả về phần còn lại điểm nổi (modulo) của sự phân chia của các đối số, (do đó (! == 0,00))

Toán tử mô đun - Tại sao không sử dụng toán tử mô đun? Ví dụ.

if(fmod($val, 1) !== 0.00){
    // your code if its decimals has a value
} else {
    // your code if the decimals are .00, or is an integer
}
8 - why not use the modulus operator? E.g.
if(fmod($val, 1) !== 0.00){
    // your code if its decimals has a value
} else {
    // your code if the decimals are .00, or is an integer
}
8

Từ các tài liệu PHP:

Toán tử mô đun được chuyển đổi thành số nguyên (bằng cách tước phần thập phân) trước khi xử lý.

Sẽ phá hủy một cách hiệu quả mục đích OP, trong các ngôn ngữ khác như JavaScript, bạn có thể sử dụng toán tử mô đun

Đã trả lời ngày 6 tháng 11 năm 2014 lúc 13:23Nov 6, 2014 at 13:23

1

Nếu tất cả những gì bạn cần biết là liệu một điểm thập phân tồn tại trong một biến thì điều này sẽ hoàn thành công việc ...

function containsDecimal( $value ) {
    if ( strpos( $value, "." ) !== false ) {
        return true;
    }
    return false;
}

Đây không phải là một giải pháp rất thanh lịch nhưng nó hoạt động với dây và phao.

Đảm bảo sử dụng! == và không! = Trong thử nghiệm strpos hoặc bạn sẽ nhận được kết quả không chính xác.

Đã trả lời ngày 24 tháng 1 năm 2012 lúc 4:07Jan 24, 2012 at 4:07

Owlnight OwlNight Owl

4.1484 Huy hiệu vàng27 Huy hiệu bạc37 Huy hiệu đồng4 gold badges27 silver badges37 bronze badges

1

Một cách khác để giải quyết điều này:

if(fmod($val, 1) !== 0.00){
    // your code if its decimals has a value
} else {
    // your code if the decimals are .00, or is an integer
}
9 :)

Đã trả lời ngày 21 tháng 7 năm 2011 lúc 7:33Jul 21, 2011 at 7:33

Hướng dẫn php check if number has decimals - php kiểm tra xem số có số thập phân không

k102k102k102

7,6037 Huy hiệu vàng50 Huy hiệu bạc69 Huy hiệu Đồng7 gold badges50 silver badges69 bronze badges

0

Các chức năng bạn đã đăng không chỉ là PHP.

Hãy xem

(fmod(1.00,    1) !== 0.00)    // returns false
(fmod(2,       1) !== 0.00)    // returns false
(fmod(3.01,    1) !== 0.00)    // returns true
(fmod(4.33333, 1) !== 0.00)    // returns true
(fmod(5.00000, 1) !== 0.00)    // returns false
(fmod('6.50',  1) !== 0.00)    // returns true
0 [Docs].

Chỉnh sửa: Tôi đã bỏ lỡ phần "người dùng đã nhập giá trị". Trong trường hợp này, bạn thực sự có thể sử dụng một biểu thức thông thường: I missed the "user entered value" part. In this case you can actually use a regular expression:

^\d+\.\d+$

Đã trả lời ngày 21 tháng 7 năm 2011 lúc 7:26Jul 21, 2011 at 7:26

Hướng dẫn php check if number has decimals - php kiểm tra xem số có số thập phân không

Felix Klingfelix KlingFelix Kling

775K172 Huy hiệu vàng1070 Huy hiệu bạc1118 Huy hiệu đồng172 gold badges1070 silver badges1118 bronze badges

2

Tôi đã được thông qua một chuỗi, và muốn biết đó có phải là số thập phân hay không. Tôi đã kết thúc với điều này:

function isDecimal($value) 
{
     return ((float) $value !== floor($value));
}

Tôi đã thực hiện một loạt các bài kiểm tra bao gồm số thập phân và không quyết định ở cả hai bên bằng không, và nó dường như hoạt động.

gen_Eric

Phim thương hiệu vàng 218K4040 gold badges297 silver badges336 bronze badges

Đã trả lời ngày 13 tháng 10 năm 2011 lúc 16:58Oct 13, 2011 at 16:58

Jeff vjeff vJeff V

511 Huy hiệu bạc1 Huy hiệu đồng1 silver badge1 bronze badge

1

(fmod(1.00,    1) !== 0.00)    // returns false
(fmod(2,       1) !== 0.00)    // returns false
(fmod(3.01,    1) !== 0.00)    // returns true
(fmod(4.33333, 1) !== 0.00)    // returns true
(fmod(5.00000, 1) !== 0.00)    // returns false
(fmod('6.50',  1) !== 0.00)    // returns true
1 trả về
(fmod(1.00,    1) !== 0.00)    // returns false
(fmod(2,       1) !== 0.00)    // returns false
(fmod(3.01,    1) !== 0.00)    // returns true
(fmod(4.33333, 1) !== 0.00)    // returns true
(fmod(5.00000, 1) !== 0.00)    // returns false
(fmod('6.50',  1) !== 0.00)    // returns true
2 cho số thập phân và số nguyên. Vì vậy, nếu người dùng của bạn lười biếng vào
(fmod(1.00,    1) !== 0.00)    // returns false
(fmod(2,       1) !== 0.00)    // returns false
(fmod(3.01,    1) !== 0.00)    // returns true
(fmod(4.33333, 1) !== 0.00)    // returns true
(fmod(5.00000, 1) !== 0.00)    // returns false
(fmod('6.50',  1) !== 0.00)    // returns true
3 thay vì
(fmod(1.00,    1) !== 0.00)    // returns false
(fmod(2,       1) !== 0.00)    // returns false
(fmod(3.01,    1) !== 0.00)    // returns true
(fmod(4.33333, 1) !== 0.00)    // returns true
(fmod(5.00000, 1) !== 0.00)    // returns false
(fmod('6.50',  1) !== 0.00)    // returns true
4, nó vẫn sẽ trả về
(fmod(1.00,    1) !== 0.00)    // returns false
(fmod(2,       1) !== 0.00)    // returns false
(fmod(3.01,    1) !== 0.00)    // returns true
(fmod(4.33333, 1) !== 0.00)    // returns true
(fmod(5.00000, 1) !== 0.00)    // returns false
(fmod('6.50',  1) !== 0.00)    // returns true
2:

echo is_numeric(1); // true
echo is_numeric(1.00); // true

Bạn có thể muốn chuyển đổi số nguyên thành số thập phân với PHP hoặc để cơ sở dữ liệu của bạn làm điều đó cho bạn.

Đã trả lời ngày 20 tháng 11 năm 2013 lúc 14:15Nov 20, 2013 at 14:15

rybo111rybo111rybo111

Huy hiệu vàng 12k459 Huy hiệu bạc69 Huy hiệu đồng4 gold badges59 silver badges69 bronze badges

1

Đây là một cách dung nạp hơn để xử lý điều này với đầu vào của người dùng. Regex này sẽ khớp với cả "100" hoặc "100.1" nhưng không cho phép các số âm.

/^(\d+)(\.\d+)?$/

Đã trả lời ngày 10 tháng 9 năm 2013 lúc 18:05Sep 10, 2013 at 18:05

ChaoixchaoixChaoix

1.26810 Huy hiệu bạc13 Huy hiệu đồng10 silver badges13 bronze badges

   // if numeric 

if (is_numeric($field)) {
        $whole = floor($field);
        $fraction = $field - $whole;

        // if decimal            
        if ($fraction > 0)
            // do sth
        else
        // if integer
            // do sth 
}
else

   // if non-numeric
   // do sth

Đã trả lời ngày 31 tháng 7 năm 2014 lúc 12:46Jul 31, 2014 at 12:46

Van Bienvan BienVan Bien

111 huy hiệu bạc2 huy hiệu đồng1 silver badge2 bronze badges

Tôi sử dụng cái này:

function is_decimal ($price){
  $value= trim($price); // trim space keys
  $value= is_numeric($value); // validate numeric and numeric string, e.g., 12.00, 1e00, 123; but not -123
  $value= preg_match('/^\d$/', $value); // only allow any digit e.g., 0,1,2,3,4,5,6,7,8,9. This will eliminate the numeric string, e.g., 1e00
  $value= round($value, 2); // to a specified number of decimal places.e.g., 1.12345=> 1.12

  return $value;
}

Đã trả lời ngày 5 tháng 7 năm 2014 lúc 4:19Jul 5, 2014 at 4:19

0

if(fmod($val, 1) !== 0.00){
    // your code if its decimals has a value
} else {
    // your code if the decimals are .00, or is an integer
}
0

Đã trả lời ngày 3 tháng 3 năm 2014 lúc 11:20Mar 3, 2014 at 11:20

Hướng dẫn php check if number has decimals - php kiểm tra xem số có số thập phân không

NeocortexneocortexNeocortex

6439 Huy hiệu bạc32 Huy hiệu Đồng9 silver badges32 bronze badges

Một sự kết hợp hoàn toàn .. nhưng hey nó hoạt động!

if(fmod($val, 1) !== 0.00){
    // your code if its decimals has a value
} else {
    // your code if the decimals are .00, or is an integer
}
1

Đã trả lời ngày 6 tháng 3 năm 2015 lúc 22:22Mar 6, 2015 at 22:22

Hướng dẫn php check if number has decimals - php kiểm tra xem số có số thập phân không

Duane Lortieduane LortieDuane Lortie

1.2821 Huy hiệu vàng12 Huy hiệu bạc16 Huy hiệu đồng1 gold badge12 silver badges16 bronze badges

Cách dễ dàng để tìm ra giá trị được đăng là số nguyên và float vì vậy điều này sẽ giúp bạn

if(fmod($val, 1) !== 0.00){
    // your code if its decimals has a value
} else {
    // your code if the decimals are .00, or is an integer
}
2

Nếu bạn cho 10 hoặc 10,5 hoặc 10.0, kết quả sẽ thành công nếu bạn xác định bất kỳ ký tự hoặc ký tự specail nào không có dấu chấm, nó sẽ không thành công

Đã trả lời ngày 25 tháng 12 năm 2019 lúc 11:57Dec 25, 2019 at 11:57

Hướng dẫn php check if number has decimals - php kiểm tra xem số có số thập phân không

Abubakkar Tahirabubakkar Tahirabubakkar tahir

6971 Huy hiệu vàng11 Huy hiệu bạc12 Huy hiệu đồng1 gold badge11 silver badges12 bronze badges

Làm thế nào về

(fmod(1.00,    1) !== 0.00)    // returns false
(fmod(2,       1) !== 0.00)    // returns false
(fmod(3.01,    1) !== 0.00)    // returns true
(fmod(4.33333, 1) !== 0.00)    // returns true
(fmod(5.00000, 1) !== 0.00)    // returns false
(fmod('6.50',  1) !== 0.00)    // returns true
6? Nếu
(fmod(1.00,    1) !== 0.00)    // returns false
(fmod(2,       1) !== 0.00)    // returns false
(fmod(3.01,    1) !== 0.00)    // returns true
(fmod(4.33333, 1) !== 0.00)    // returns true
(fmod(5.00000, 1) !== 0.00)    // returns false
(fmod('6.50',  1) !== 0.00)    // returns true
2 thì đó là thập phân, nếu
(fmod(1.00,    1) !== 0.00)    // returns false
(fmod(2,       1) !== 0.00)    // returns false
(fmod(3.01,    1) !== 0.00)    // returns true
(fmod(4.33333, 1) !== 0.00)    // returns true
(fmod(5.00000, 1) !== 0.00)    // returns false
(fmod('6.50',  1) !== 0.00)    // returns true
8 thì không.

Đã trả lời ngày 29 tháng 11 năm 2021 lúc 15:49Nov 29, 2021 at 15:49

Tôi không thể bình luận, nhưng tôi có hành vi thú vị này. (Đã thử nghiệm trên v. 7.3.19 trên một trang web để thử nghiệm PHP trực tuyến)

Nếu bạn nhân 50 với 1,1 FMOD cho kết quả khác với dự kiến. Nếu bạn làm bằng 1.2 hoặc 1.3 thì tốt, nếu bạn làm một số khác (như 60 hoặc 40) cũng tốt.

if(fmod($val, 1) !== 0.00){
    // your code if its decimals has a value
} else {
    // your code if the decimals are .00, or is an integer
}
3

Đã trả lời ngày 6 tháng 2 lúc 18:37Feb 6 at 18:37

1

Giải pháp đơn giản nhất là

if(fmod($val, 1) !== 0.00){
    // your code if its decimals has a value
} else {
    // your code if the decimals are .00, or is an integer
}
4

Đã trả lời ngày 24 tháng 8 năm 2017 lúc 10:06Aug 24, 2017 at 10:06

Hướng dẫn php check if number has decimals - php kiểm tra xem số có số thập phân không

Ayyaz Zafarayyaz ZafarAyyaz Zafar

1.9085 Huy hiệu vàng25 Huy hiệu bạc39 Huy hiệu đồng5 gold badges25 silver badges39 bronze badges

Nếu bạn đang làm việc với xác thực biểu mẫu. Sau đó trong trường hợp này biểu mẫu gửi chuỗi. Tôi đã sử dụng mã sau để kiểm tra đầu vào hình thức là số thập phân hay không. Tôi hy vọng điều này cũng sẽ làm việc cho bạn.

if(fmod($val, 1) !== 0.00){
    // your code if its decimals has a value
} else {
    // your code if the decimals are .00, or is an integer
}
5

Đã trả lời ngày 15 tháng 12 năm 2017 lúc 2:17Dec 15, 2017 at 2:17

Hướng dẫn php check if number has decimals - php kiểm tra xem số có số thập phân không

Adnan Ahmadadnan AhmadAdnan Ahmad

7901 Huy hiệu vàng11 Huy hiệu bạc12 Huy hiệu đồng1 gold badge11 silver badges12 bronze badges

if(fmod($val, 1) !== 0.00){
    // your code if its decimals has a value
} else {
    // your code if the decimals are .00, or is an integer
}
6

Các vấn đề đã biết với chức năng trên:

1) Không hỗ trợ "Ký hiệu khoa học" (1.23E-123), tài chính (hàng đầu $ hoặc khác) hoặc "Facing F" (phao C ++) hoặc "tiền tệ kéo dài" (USD, GBP, v.v.)

2) Sai dương trên các tên tệp chuỗi khớp với số thập phân: Xin lưu ý rằng ví dụ "10.0" vì tên tệp không thể được phân biệt với số thập phân, vì vậy nếu bạn đang cố gắng phát hiện một loại từ một chuỗi một mình và tên tệp phù hợp với số thập phân Tên và không có đường dẫn bao gồm, sẽ không thể nhận ra.

Đã trả lời ngày 10 tháng 2 năm 2020 lúc 19:24Feb 10, 2020 at 19:24

Hướng dẫn php check if number has decimals - php kiểm tra xem số có số thập phân không

Có thể thử xem xét điều này là tốt

(fmod(1.00,    1) !== 0.00)    // returns false
(fmod(2,       1) !== 0.00)    // returns false
(fmod(3.01,    1) !== 0.00)    // returns true
(fmod(4.33333, 1) !== 0.00)    // returns true
(fmod(5.00000, 1) !== 0.00)    // returns false
(fmod('6.50',  1) !== 0.00)    // returns true
9

Đã trả lời ngày 23 tháng 12 năm 2012 lúc 4:13Dec 23, 2012 at 4:13

Hướng dẫn php check if number has decimals - php kiểm tra xem số có số thập phân không

Cam Tulloscam TullosCam Tullos

2.4771 Huy hiệu vàng20 Huy hiệu bạc18 Huy hiệu đồng1 gold badge20 silver badges18 bronze badges

0

Làm thế nào tôi có thể kiểm tra xem một số là thập phân trong PHP?

Làm thế nào để bạn kiểm tra xem số là thập phân hay không PHP?Hàm is_numeric () kiểm tra xem một biến là số hoặc chuỗi số.Hàm này trả về true (1) nếu biến là số hoặc chuỗi số, nếu không nó sẽ trả về false/không có gì.The is_numeric() function checks whether a variable is a number or a numeric string. This function returns true (1) if the variable is a number or a numeric string, otherwise it returns false/nothing.

Là một số thập phân và số nguyên trong PHP?

Số nguyên PHP Một số nguyên là một số không có phần thập phân.Kiểu dữ liệu số nguyên là số không phân giải giữa -2147483648 và 2147483647 trong các hệ thống 32 bit và giữa -9223372036854775808 và 9223372036854775807 trong 64 hệ thống bit.An integer is a number without any decimal part. An integer data type is a non-decimal number between -2147483648 and 2147483647 in 32 bit systems, and between -9223372036854775808 and 9223372036854775807 in 64 bit systems.

Có kiểm tra phao trong PHP không?

Hàm is_float () kiểm tra xem một biến có phải là float hay không.Hàm này trả về true (1) nếu biến là loại float, nếu không nó sẽ trả về sai.. This function returns true (1) if the variable is of type float, otherwise it returns false.