Hướng dẫn how do you check if a number is a fraction javascript? - làm thế nào để bạn kiểm tra xem một số có phải là một javascript phân số hay không?

Tôi thích chức năng nhỏ này, sẽ trả về đúng cho cả số nguyên dương và âm:

function isInt[val] {
    return ["string","number"].indexOf[typeof[val]] > -1 && val !== '' && !isNaN[val+".0"];
}

Điều này hoạt động bởi vì 1 hoặc "1" trở thành "1.0", isnan [] trả về sai [mà sau đó chúng ta phủ định và trả lại], nhưng 1.0 hoặc "1.0" trở thành "1.0.0", trong khi "chuỗi" trở thành "chuỗi. 0 ", cả hai đều không phải là số, vì vậy isnan [] trả về sai [và, một lần nữa, bị phủ nhận].

Nếu bạn chỉ muốn số nguyên dương, có biến thể này:

function isPositiveInt[val] {
    return ["string","number"].indexOf[typeof[val]] > -1 && val !== '' && !isNaN["0"+val];
}

Hoặc, đối với các số nguyên âm:

function isNegativeInt[val] {
    return `["string","number"].indexOf[typeof[val]] > -1` && val !== '' && isNaN["0"+val];
}

isPositiveInt [] hoạt động bằng cách di chuyển chuỗi số được nối trước giá trị sẽ được kiểm tra. Ví dụ, ispositive [1] dẫn đến isnan [] đánh giá "01", đánh giá sai. Trong khi đó, ispositiveInt [-1] dẫn đến isnan [] đánh giá "0-1", đánh giá đúng. Chúng tôi phủ nhận giá trị trả lại và điều đó mang lại cho chúng tôi những gì chúng tôi muốn. isnegativeInt [] hoạt động tương tự, nhưng không phủ định giá trị trả về của isnan [].

Edit:

Việc triển khai ban đầu của tôi cũng sẽ trả về đúng trên các mảng và chuỗi trống. Việc thực hiện này không có khiếm khuyết đó. Nó cũng có lợi ích của việc quay lại sớm nếu Val không phải là chuỗi hoặc số, hoặc nếu đó là một chuỗi trống, làm cho nó nhanh hơn trong những trường hợp này. Bạn có thể sửa đổi nó hơn nữa bằng cách thay thế hai điều khoản đầu tiên bằng

typeof[val] != "number"

Nếu bạn chỉ muốn khớp với các số theo nghĩa đen [và không phải chuỗi]

Edit:

Tôi chưa thể đăng bình luận, vì vậy tôi sẽ thêm điều này vào câu trả lời của mình. Điểm chuẩn được đăng bởi @asok rất nhiều thông tin; Tuy nhiên, chức năng nhanh nhất không phù hợp với các yêu cầu, vì nó cũng trả về sự nổi, mảng, booleans và chuỗi trống.

Tôi đã tạo bộ kiểm tra sau để kiểm tra từng chức năng, thêm câu trả lời của tôi vào danh sách [chức năng 8, phân tích chuỗi và chức năng 9, không]:

funcs = [
    function[n] {
        return n % 1 == 0;
    },
    function[n] {
        return typeof n === 'number' && n % 1 == 0;
    },
    function[n] {
        return typeof n === 'number' && parseFloat[n] == parseInt[n, 10] && !isNaN[n];
    },
    function[n] {
        return n.toString[].indexOf['.'] === -1;
    },
    function[n] {
        return n === +n && n === [n|0];
    },
    function[n] {
        return parseInt[n] === n;
    },
    function[n] {
        return /^-?[0-9]+$/.test[n.toString[]];
    },
    function[n] {
        if [[undefined === n] || [null === n]] {
            return false;
        }
        if [typeof n == 'number'] {
            return true;
        }
        return !isNaN[n - 0];
    },
    function[n] {
        return ["string","number"].indexOf[typeof[n]] > -1 && n !== '' && !isNaN[n+".0"];
    }
];
vals = [
    [1,true],
    [-1,true],
    [1.1,false],
    [-1.1,false],
    [[],false],
    [{},false],
    [true,false],
    [false,false],
    [null,false],
    ["",false],
    ["a",false],
    ["1",null],
    ["-1",null],
    ["1.1",null],
    ["-1.1",null]
];

for [var i in funcs] {
    var pass = true;
    console.log["Testing function "+i];
    for [var ii in vals] {
        var n = vals[ii][0];
        var ns;
        if [n === null] {
            ns = n+"";
        } else {
            switch [typeof[n]] {
                case "string":
                    ns = "'" + n + "'";
                    break;
                case "object":
                    ns = Object.prototype.toString.call[n];
                    break;
                default:
                    ns = n;
            }
            ns = "["+typeof[n]+"] "+ns;
        }

        var x = vals[ii][1];
        var xs;
        if [x === null] {
            xs = "[ANY]";
        } else {
            switch [typeof[x]] {
                case "string":
                    xs = "'" + n + "'";
                    break;
                case "object":
                    xs = Object.prototype.toString.call[x];
                    break;
                default:
                    xs = x;
            }
            xs = "["+typeof[x]+"] "+xs;
        }

        var rms;
        try {
            var r = funcs[i][n];
            var rs;
            if [r === null] {
                rs = r+"";
            } else {
                switch [typeof[r]] {
                    case "string":
                        rs = "'" + r + "'";
                        break;
                    case "object":
                        rs = Object.prototype.toString.call[r];
                        break;
                    default:
                        rs = r;
                }
                rs = "["+typeof[r]+"] "+rs;
            }

            var m;
            var ms;
            if [x === null] {
                m = true;
                ms = "N/A";
            } else if [typeof[x] == 'object'] {
                m = [xs === rs];
                ms = m;
            } else {
                m = [x === r];
                ms = m;
            }
            if [!m] {
                pass = false;
            }
            rms = "Result: "+rs+", Match: "+ms;
        } catch [e] {
            rms = "Test skipped; function threw exception!"
        }

        console.log["    Value: "+ns+", Expect: "+xs+", "+rms];
    }
    console.log[pass ? "PASS!" : "FAIL!"];
}

Tôi cũng đọc lại điểm chuẩn với hàm số 8 được thêm vào danh sách. Tôi sẽ không đăng kết quả, vì chúng hơi xấu hổ [ví dụ: chức năng đó không nhanh] ...

Các [rút gọn - Tôi đã xóa các thử nghiệm thành công, vì đầu ra khá dài] như sau:

Testing function 0
Value: [object] [object Array], Expect: [boolean] false, Result: [boolean] true, Match: false
Value: [boolean] true, Expect: [boolean] false, Result: [boolean] true, Match: false
Value: [boolean] false, Expect: [boolean] false, Result: [boolean] true, Match: false
Value: null, Expect: [boolean] false, Result: [boolean] true, Match: false
Value: [string] '', Expect: [boolean] false, Result: [boolean] true, Match: false
Value: [string] '1', Expect: [ANY], Result: [boolean] true, Match: N/A
Value: [string] '-1', Expect: [ANY], Result: [boolean] true, Match: N/A
Value: [string] '1.1', Expect: [ANY], Result: [boolean] false, Match: N/A
Value: [string] '-1.1', Expect: [ANY], Result: [boolean] false, Match: N/A
FAIL!

Testing function 1
Value: [string] '1', Expect: [ANY], Result: [boolean] false, Match: N/A
Value: [string] '-1', Expect: [ANY], Result: [boolean] false, Match: N/A
Value: [string] '1.1', Expect: [ANY], Result: [boolean] false, Match: N/A
Value: [string] '-1.1', Expect: [ANY], Result: [boolean] false, Match: N/A
PASS!

Testing function 2
Value: [string] '1', Expect: [ANY], Result: [boolean] false, Match: N/A
Value: [string] '-1', Expect: [ANY], Result: [boolean] false, Match: N/A
Value: [string] '1.1', Expect: [ANY], Result: [boolean] false, Match: N/A
Value: [string] '-1.1', Expect: [ANY], Result: [boolean] false, Match: N/A
PASS!

Testing function 3
Value: [object] true, Expect: [boolean] false, Result: [boolean] true, Match: false
Value: [object] false, Expect: [boolean] false, Result: [boolean] true, Match: false
Value: [boolean] [object Array], Expect: [boolean] false, Result: [boolean] true, Match: false
Value: [boolean] [object Object], Expect: [boolean] false, Result: [boolean] true, Match: false
Value: null, Expect: [boolean] false, Test skipped; function threw exception!
Value: [string] '', Expect: [boolean] false, Result: [boolean] true, Match: false
Value: [string] 'a', Expect: [boolean] false, Result: [boolean] true, Match: false
Value: [string] '1', Expect: [ANY], Result: [boolean] true, Match: N/A
Value: [string] '-1', Expect: [ANY], Result: [boolean] true, Match: N/A
Value: [string] '1.1', Expect: [ANY], Result: [boolean] false, Match: N/A
Value: [string] '-1.1', Expect: [ANY], Result: [boolean] false, Match: N/A
FAIL!

Testing function 4
Value: [string] '1', Expect: [ANY], Result: [boolean] false, Match: N/A
Value: [string] '-1', Expect: [ANY], Result: [boolean] false, Match: N/A
Value: [string] '1.1', Expect: [ANY], Result: [boolean] false, Match: N/A
Value: [string] '-1.1', Expect: [ANY], Result: [boolean] false, Match: N/A
PASS!

Testing function 5
Value: [string] '1', Expect: [ANY], Result: [boolean] false, Match: N/A
Value: [string] '-1', Expect: [ANY], Result: [boolean] false, Match: N/A
Value: [string] '1.1', Expect: [ANY], Result: [boolean] false, Match: N/A
Value: [string] '-1.1', Expect: [ANY], Result: [boolean] false, Match: N/A
PASS!

Testing function 6
Value: null, Expect: [boolean] false, Test skipped; function threw exception!
Value: [string] '1', Expect: [ANY], Result: [boolean] true, Match: N/A
Value: [string] '-1', Expect: [ANY], Result: [boolean] true, Match: N/A
Value: [string] '1.1', Expect: [ANY], Result: [boolean] false, Match: N/A
Value: [string] '-1.1', Expect: [ANY], Result: [boolean] false, Match: N/A
PASS!

Testing function 7
Value: [number] 1.1, Expect: [boolean] false, Result: [boolean] true, Match: false
Value: [number] -1.1, Expect: [boolean] false, Result: [boolean] true, Match: false
Value: [object] true, Expect: [boolean] false, Result: [boolean] true, Match: false
Value: [boolean] [object Array], Expect: [boolean] false, Result: [boolean] true, Match: false
Value: [boolean] [object Object], Expect: [boolean] false, Result: [boolean] true, Match: false
Value: [string] '', Expect: [boolean] false, Result: [boolean] true, Match: false
Value: [string] '1', Expect: [ANY], Result: [boolean] true, Match: N/A
Value: [string] '-1', Expect: [ANY], Result: [boolean] true, Match: N/A
Value: [string] '1.1', Expect: [ANY], Result: [boolean] true, Match: N/A
Value: [string] '-1.1', Expect: [ANY], Result: [boolean] true, Match: N/A
FAIL!

Testing function 8
Value: [string] '1', Expect: [ANY], Result: [boolean] true, Match: N/A
Value: [string] '-1', Expect: [ANY], Result: [boolean] true, Match: N/A
Value: [string] '1.1', Expect: [ANY], Result: [boolean] false, Match: N/A
Value: [string] '-1.1', Expect: [ANY], Result: [boolean] false, Match: N/A
PASS!

Testing function 9
Value: [string] '1', Expect: [ANY], Result: [boolean] false, Match: N/A
Value: [string] '-1', Expect: [ANY], Result: [boolean] false, Match: N/A
Value: [string] '1.1', Expect: [ANY], Result: [boolean] false, Match: N/A
Value: [string] '-1.1', Expect: [ANY], Result: [boolean] false, Match: N/A
PASS!

Tôi đã bỏ đi trong các lỗi để bạn có thể thấy mỗi hàm bị lỗi ở đâu và các thử nghiệm [chuỗi] '#' để bạn có thể thấy mỗi hàm xử lý các giá trị số nguyên và nổi trong chuỗi, vì một số có thể muốn các phân tích cú pháp này và một số có thể không.

Trong số 10 chức năng được thử nghiệm, các chức năng thực sự phù hợp với yêu cầu của OP là [1,3,5,6,8,9]]

Làm thế nào để bạn kiểm tra xem một số là thập phân trong JS?

Sử dụng phương pháp Math.floor để kiểm tra xem một số có vị trí thập phân hay không. floor method to check whether a number has a decimal place or not.

Làm thế nào để bạn kiểm tra xem một cái gì đó là một số toàn bộ trong JavaScript?

Phương thức number.isinteger [] trả về true nếu giá trị là số nguyên của số kiểu dữ liệu.Nếu không thì nó trả về sai.Number. isInteger[] method returns true if a value is an integer of the datatype Number. Otherwise it returns false .

Làm thế nào để bạn kiểm tra xem một số là float hay số nguyên trong javascript?

isinteger [] Trong chương trình trên, giá trị truyền được kiểm tra nếu đó là giá trị số nguyên hoặc giá trị float.Toán tử loại được sử dụng để kiểm tra kiểu dữ liệu của giá trị truyền.Phương thức isnan [] kiểm tra xem giá trị truyền có phải là số không. In the above program, the passed value is checked if it is an integer value or a float value. The typeof operator is used to check the data type of the passed value. The isNaN[] method checks if the passed value is a number.

Làm thế nào để bạn kiểm tra xem số đó có số thập phân hay không?

Bạn có thể nhân nó với 10 và sau đó thực hiện thao tác/divison "modulo" với 10 và kiểm tra xem kết quả của hai thao tác đó bằng không.Kết quả của hai hoạt động đó sẽ cung cấp cho bạn chữ số đầu tiên sau điểm thập phân.Nếu kết quả bằng 0 thì số là một số.multiply it by 10 and then do a "modulo" operation/divison with 10, and check if result of that two operations is zero. Result of that two operations will give you first digit after the decimal point. If result is equal to zero then the number is a whole number.

Bài Viết Liên Quan

Chủ Đề