Lấy số nguyên trong javascript

Trong bài này mình sẽ hướng dẫn các bạn các cách chia lấy dư trong Javascript. Để chia lấy phần dư trong Javascript thì ta sử dụng toán tử %, còn chia lấy phần nguyên thì ta dùng hàm Math.floor.

Nội dung chính

Show

  • Chia lấy dư trong Javascript
  • Chia lấy phần nguyên trong Javascript
  • 1) Thuộc tính MAX_VALUE
  • 2) Thuộc tính MIN_VALUE
  • 3) Thuộc tính POSITIVE_INFINITY
  • 4) Thuộc tính NEGATIVE_INFINITY
  • 5) Phương thức isFinite()
  • 6) Phương thức isInteger()
  • 7) Phương thức isNaN()

Lấy số nguyên trong javascript

Lấy số nguyên trong javascript

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

Chia lấy dư trong Javascript

Muốn chia lấy dư ta dùng toán tử %. Ví dụ dưới đây mình muốn lấy phần dư của phép chia 8 / 3 thì sẽ viết code như sau:

var mod = 8 % 3;

console.log(mod); // Kết quả là 2

Phép toán thường được sử dụng để kiểm tra một số có chia hết cho một số khác hay không. Ví dụ muốn kiểm tra số N có chia hết cho 2 không thì ta chỉ cần kiểm tra như sau:

if (N % 2 == 0){
    console.log(N + " chia het cho 2");
}

Chia lấy phần nguyên trong Javascript

Chia lấy phần nguyên thì ta sử dụng phương thức Math.floor, đây
là hàm dùng để làm tròn một số xuống cận dưới, tức là mọi số nó sẽ được làm tròn bỏ đi giá trị sau dấu phẩy động.

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

Math.floor(2); // Kết quả: 2
Math.floor(2.1); // Kết quả: 2
Math.floor(2.5); // Kết quả: 2
Math.floor(2.8); // Kết quả: 2   

Theo thông tin mình biết thì khi sử dụng hàm Math.floor sẽ tốn nhiều tài nguyên, vì vậy bạn cũng có thể sử dụng công thức sau để làm tròn.

Gọi a là số bị chia, b là số chia, thì phần nguyên của a chia b sẽ là:

var phan_nguyen = (a - (a % b)); 

Ví dụ: Lấy phần nguyên của phép 20 / 3.

var phan_nguyen = (20 - (20 % 3));

Vậy là xong.

JavaScript tính toán đúng sàn các số âm và phần còn lại của các số không nguyên, theo các định nghĩa toán học cho chúng.

FLOOR được định nghĩa là “số nguyên lớn nhất nhỏ hơn tham số”, do đó:

  • số dương: FLOOR (X) = phần nguyên của X;

  • số âm: FLOOR (X) = phần nguyên của X trừ 1 (vì nó phải NHỎ hơn tham số, nghĩa là âm hơn!)

REMAINDER
được định nghĩa là “phần còn lại” của một bộ phận (số học Euclide). Khi cổ tức không phải là số nguyên, thương số thường cũng không phải là số nguyên, nghĩa là không có phần còn lại, nhưng nếu thương số buộc phải là số nguyên (và đó là điều xảy ra khi ai đó cố gắng lấy phần còn lại hoặc mô đun của số dấu phẩy động), rõ ràng sẽ có một “số dư” không nguyên.

JavaScript không tính toán mọi thứ như mong đợi, vì vậy, lập trình viên phải cẩn thận đặt câu hỏi
thích hợp (và mọi người nên cẩn thận để trả lời những gì được hỏi!) Câu hỏi đầu tiên của Yarin KHÔNG phải là “phép chia số nguyên của X theo Y”, nhưng, thay vào đó, “số lượng WHOLE của một số nguyên đã cho VÀO một số nguyên khác”. Đối với các số dương, câu trả lời là giống nhau cho cả hai, nhưng không phải cho các số âm, bởi vì phép chia số nguyên (chia theo số chia) sẽ nhỏ hơn -1 so với số lần (số chia) “đi vào” số khác (cổ tức). Nói cách khác, FLOOR sẽ trả về câu trả
lời đúng cho phép chia số nguyên của một số âm, nhưng Yarin đã không hỏi điều đó!

gammax trả lời đúng, mã đó hoạt động theo yêu cầu của Yarin. Mặt khác, Samuel đã sai, anh ta đã không làm toán, tôi đoán, hoặc anh ta sẽ thấy rằng nó hoạt động (đồng thời, anh ta đã không nói đâu là ước số của ví dụ của mình, nhưng tôi hy vọng đó là 3):

Phần còn lại = X% Y = -100% 3 = -1

GoesInto = (X – Phần
còn lại) / Y = (-100 – -1) / 3 = -99 / 3 = -33

Nhân tiện, tôi đã thử nghiệm mã trên Firefox 27.0.1, nó hoạt động như mong đợi, với các số dương và âm và cả với các giá trị không nguyên, cả về cổ tức và ước số. Thí dụ:

-100.34 / 3.57: GoesInto = -28, phần còn lại = -0.3800000000000079

Vâng, tôi nhận thấy, có một vấn đề chính xác ở đó, nhưng tôi không có thời gian để kiểm tra nó (tôi không
biết đó là vấn đề với Firefox, Windows 7 hay với FPU CPU của tôi). Tuy nhiên, đối với câu hỏi của Yarin, chỉ liên quan đến số nguyên, mã của gammax hoạt động hoàn hảo.

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

– Trong JavaScript có một đối tượng được xây dựng sẵn tên là Number.

– Đối tượng Number có các phương thức và thuộc tính, với việc truy cập vào các phương thức và thuộc tính đó, ta sẽ có thể làm được một số công việc như:

  • Kiểm tra một giá trị nào đó có phải là số nguyên hay không.
  • Kiểm tra một giá trị nào đó có phải là NaN hay không.
  • Lấy số lớn nhất có thể trong JavaScript.
  • ….

– Dưới đây là danh các thuộc tính của đối tượng Number:

Thuộc tínhMô tả chức năngMAX_VALUE
Trả về số lớn nhất có thể trong JavaScript
MIN_VALUE
Trả về số gần với số 0 nhất trong JavaScript
POSITIVE_INFINITY
Trả về giá trị dương vô cực (Infinity)
NEGATIVE_INFINITY
Trả về giá trị âm vô cực (-Infinity)

– Dưới đây là danh các phương thức của đối tượng Number:

Phương thứcMô tả chức năngisFinite()
Kiểm tra xem một giá trị nào đó có phải là số hữu hạn hay không
isInteger()
Kiểm tra xem một giá trị nào đó có phải là số nguyên hay không
isNaN()
Kiểm tra xem một giá trị nào đó có phải là NaN hay không

1) Thuộc tính MAX_VALUE

– Thuộc tính MAX_VALUE trả về số lớn nhất có thể trong JavaScript.

<script>
    var a = Number.MAX_VALUE; //Biến a sẽ có giá trị là 1.7976931348623157e+308
</script>

Xem ví dụ

– Lưu ý: Nếu một số nào đó lớn hơn MAX_VALUE thì nó chỉ có thể là dương vô cực (Infinity)

2) Thuộc tính MIN_VALUE

– Thuộc tính MIN_VALUE trả về số gần với số 0 nhất.

<script>
    var a = Number.MIN_VALUE; //Biến a sẽ có giá trị là 5e-324
</script>

Xem ví dụ

– Lưu ý: Nếu một số nào đó gần với số 0 hơn MIN_VALUE thì số đó chính là số 0.

3) Thuộc tính POSITIVE_INFINITY

– Thuộc tính POSITIVE_INFINITY trả về giá trị dương vô cực (Infinity)

(Giá trị dương vô cực được xem là giá trị lớn hơn tất cả các số trong JavaScript)

<script>
    var a = Number.POSITIVE_INFINITY; //Biến a sẽ có giá trị là Infinity
</script>

Xem ví dụ

4) Thuộc tính NEGATIVE_INFINITY

– Thuộc tính NEGATIVE_INFINITY trả về giá trị âm vô cực (-Infinity)

(Giá trị âm vô cực được xem là giá trị nhỏ hơn tất cả các số trong JavaScript)

<script>
    var a = Number.NEGATIVE_INFINITY; //Biến a sẽ có giá trị là -Infinity
</script>

Xem ví dụ

5) Phương thức isFinite()

– Phương thức isFinite() dùng để kiểm tra xem một giá trị nào đó có phải là số hữu hạn hay không.

  • Nếu
    phải thì trả về giá trị true.
  • Nếu không thì trả về giá trị false.
<script>
    var a = Number.isFinite(1993); //true
    var b = Number.isFinite(-1993); //true
    var c = Number.isFinite(0); //true
    var d = Number.isFinite(Infinity); //false
    var e = Number.isFinite(-Infinity); //false
    var f = Number.isFinite(0/0); //false
</script>

Xem ví dụ

– Phương thức isFinite() của đối tượng Number khác với hàm isFinite() toàn cục:

  • Hàm isFinite() toàn cục sẽ chuyển giá trị về dạng số rồi mới kiểm tra xem giá trị đó có phải là số hữu hạn hay không.
  • Phương thức isFinite() của đối tượng Number thì không chuyển giá trị về dạng số, do
    đó sẽ không trả về true cho bất kỳ giá trị nào không thuộc kiểu dữ liệu number.
<script>
    var a = Number.isFinite("1993"); //false
    var b = isFinite("1993"); //true
</script>

Xem ví dụ

6) Phương thức isInteger()

– Phương thức isInteger() dùng để kiểm tra xem một giá trị nào đó có phải là số nguyên hay không.

  • Nếu phải thì trả về giá trị true.
  • Nếu không thì trả về giá trị false.
<script>
    var a = Number.isInteger(1993); //true
    var b = Number.isInteger(-1993); //true
    var c = Number.isInteger(1993.5); //false
    var d = Number.isInteger("1993"); //false
    var e = Number.isInteger(Infinity); //false
    var f = Number.isInteger(-Infinity); //false
</script>

Xem ví dụ

7) Phương thức isNaN()

– Phương thức isNaN() dùng để kiểm tra xem một giá trị nào đó có phải là NaN hay không.

  • Nếu phải thì trả về giá trị true.
  • Nếu không thì trả về giá trị false.
<script>
    var a = Number.isNaN(1993) //false
    var b = Number.isNaN(-19.93) //false
    var c = Number.isNaN(50-20) //false
    var d = Number.isNaN(0) //false
    var e = Number.isNaN("1993") //false
    var f = Number.isNaN("JavaScript") //false
    var g = Number.isNaN("2016/03/03") //false
    var h = Number.isNaN("") //false
    var i = Number.isNaN(true) //false
    var j = Number.isNaN(undefined) //false
    var k = Number.isNaN("NaN") //false
    var l = Number.isNaN(NaN) //true
    var m = Number.isNaN(0 / 0) //true
</script>

Xem ví dụ

– Lưu ý: Giá trị phải có kiểu dữ liệu là number, phương thức isNaN() sẽ
không trả về giá trị true cho bất kỳ giá trị nào không có kiểu dữ liệu là number.