Tại sao số lớn, số có nhiều chữ số bị đổi thành định dạng lũy thừa cơ số e

Xin chào,

Trong javascript tại sao kể từ số integer có 22 chữ số hoặc số float có 8 chữ số lại chuyển sang định dạng số mũ cơ số e?

console.log(100) //=> 100
console.log(1000000000000000000000) // => 1e+21

console.log(0.001) //=> 0.001
console.log(0.0000001) //=> 1e-7

Không biết nó liên quan đến format hay giá trị mặc định gì trong javascript, nếu có docs về vấn đề này thì cho mình xin link với!
Cảm ơn!

Hỏi gì lạ rứa? Hỏi làm String mà ví dụ lại hông thấy có string nào, mà trong JavaScript cũng không có khái niệm Integer.

Người hỏi không biết mình hỏi gì, làm sao ai có đủ khả năng trả lời phải không các bạn?

7 Likes

Lúc nãy em định hỏi hàm String(value) VD như này :

String(100) //=> "100"
String(1000000000000000000000) // => "1e+21"

String(0.001) //=> "0.001"
String(0.0000001) //=> "1e-7"

Nhưng chợt nhận ra bất kỳ trường hợp nào số có nhiều chữ số cũng bị đổi format thành lũy thừa cơ số e nên quên edit lại :sweat_smile:

dạ kiểu integer và kiểu float trong javascript gọi chung là kiểu number ạ, số nguyên (integer) phải 21 chữ số kể từ 999999999999999940000 sẽ bị chuyển thành định dạng 1e+21. Còn số phần thập phân (float) chỉ cần 7 chữ số là sẽ bị chuyển thành e mũ.

Thực ra số Number trong JS là số double :smiley: nên không thể biểu diễn số 12345678901234567.

Nhưng sau này cũng trong JS vẫn có mảng số nguyên 64 bit.

6 Likes

Ở một diễn biến khác:

console.log(100)
console.log(1000000000000000000000n.toString())

console.log(0.001.toFixed(3))
console.log(0.0000001.toFixed(7))
6 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?