Trình Định Dạng Số

Định dạng số với dấu phẩy, viết tắt, ký hiệu tiền tệ và số thập phân tùy chỉnh.

Cách hoạt động

  1. Nhập số của bạn: gõ hoặc dán một giá trị số, số nguyên, số thập phân, số lớn hoặc ký hiệu khoa học.
  2. Chọn tùy chọn định dạng: chọn ngôn ngữ địa phương (US, EU, v.v.), số thập phân, dấu phân tách nhóm và ký hiệu tiền tệ nếu cần.
  3. Sao chép kết quả đã định dạng: số hiển thị trong định dạng đã chọn ngay tức thì. Sao chép để sử dụng trong báo cáo, tài liệu hoặc xuất.

Tại sao sử dụng trình định dạng số?

Số có nghĩa khác nhau tùy theo ngôn ngữ địa phương. Hoa Kỳ viết một nghìn là 1,000.00 trong khi nhiều nước châu Âu viết là 1.000,00. Sao chép các số thô giữa các hệ thống gây ra lỗi phân tích, đọc sai và lỗi tài chính. Trình định dạng số đảm bảo các số của bạn hiển thị đúng cho bất kỳ đối tượng nào, chuẩn bị báo cáo tài chính, bản địa hóa nội dung hoặc làm sạch dữ liệu để trình bày.

Tính năng

Câu hỏi thường gặp

Sự khác biệt giữa định dạng số US và châu Âu là gì?

Tại Hoa Kỳ, dấu phân tách thập phân là dấu chấm (.) và dấu phân tách hàng nghìn là dấu phẩy (,), ví dụ 1,234.56. Ở phần lớn châu Âu, ngược lại: 1.234,56. Công cụ này chuyển đổi đúng giữa hai định dạng.

Tôi có thể định dạng số cho tiền tệ không?

Có. Bật chế độ tiền tệ và chọn ký hiệu ($ € £ ¥, v.v.) để thêm tiền tố cho số đã định dạng. Cho định dạng kế toán với quy ước số âm, bật chế độ kế toán.

Nó có xử lý các số rất lớn hoặc rất nhỏ không?

Có. Trình định dạng xử lý số nhiều chữ số và có thể hiển thị chúng ở ký hiệu chuẩn, nhóm hoặc khoa học. Độ chính xác dấu phẩy động được áp dụng cho số thập phân đã cấu hình.

Các tiêu chuẩn định dạng số đến từ đâu

Các định dạng số mà bạn thấy trong phần mềm ngày nay được xác định bởi một chồng nhỏ các tiêu chuẩn mất ba mươi năm để ổn định. IEEE 754 (1985), được sửa đổi vào năm 2008 và 2019, đã cố định bố cục bit của số dấu phẩy động nhị phân: 64 bit chia thành 1 dấu, 11 số mũ, 52 mantissa, đó là những gì mỗi số JavaScript là dưới mui xe. ISO 4217 (1978, ấn bản hiện tại 2015) đã xác định các mã tiền tệ ba chữ cái, USD, EUR, JPY, INR, BRL, và số đơn vị nhỏ hơn mà mỗi loại có (2 cho USD, 0 cho JPY, 3 cho KWD, 4 cho CLF). Unicode CLDR (Common Locale Data Repository), được phát hành lần đầu năm 2003, là bộ dữ liệu mở ghi lại các dấu phân cách nhóm, dấu phân cách thập phân, ký hiệu tiền tệ và quy tắc số nhiều cho mọi locale; bản phát hành hiện tại là CLDR 46 (tháng 10 năm 2024). ECMA-402 (2012), API Quốc tế hóa ECMAScript, đã cung cấp cho JavaScript một liên kết gốc đến dữ liệu đó thông qua Intl.NumberFormat, được hỗ trợ bởi ICU (International Components for Unicode) trong V8, JavaScriptCore và SpiderMonkey. Cùng nhau bốn spec đó khiến (1234567).toLocaleString('de-DE') trả về 1.234.567 thay vì 1,234,567.

Sáu mẫu locale mà bạn sẽ gặp

Hầu hết các định dạng số trong tự nhiên rơi vào sáu mẫu. Ghi nhớ sáu này bao phủ ~95% cơ sở người dùng của bất kỳ sản phẩm toàn cầu nào.

Các chế độ làm tròn, thực sự chúng làm gì

ECMA-402 (2023) đã thêm chín chế độ làm tròn vào Intl.NumberFormat. Lựa chọn thay đổi tổng tài chính, báo cáo khoa học và tính toán thuế. Ba quan trọng nhất trong thực tế.

Nơi công cụ này kiếm được tiền lương của mình

Những sai lầm cắn cả những nhà phát triển có kinh nghiệm

Các câu hỏi thường gặp hơn

Tại sao 0,1 + 0,2 không bằng 0,3?

Bởi vì các số float nhị phân IEEE 754 không thể lưu trữ chính xác phân số thập phân 0,1, theo cách tương tự rằng cơ số 10 không thể lưu trữ chính xác 1/3. Double 64 bit gần nhất với 0,1 là khoảng 0,1000000000000000055511151231257827021181583404541015625. Cộng hai xấp xỉ như vậy tạo ra một kết quả làm tròn thành 0,30000000000000004 thay vì 0,3. Mỗi ngôn ngữ IEEE 754 đều có hành vi này: Java, Python, C++, Swift, tất cả. Đối với số học thập phân chính xác, hãy sử dụng xu số nguyên hoặc thư viện như decimal.js / Decimal của Python / BigDecimal của Java.

Sự khác biệt giữa Intl.NumberFormat và toLocaleString là gì?

Cùng động cơ, công thái học khác nhau. (1234.5).toLocaleString('de-DE', {style: 'currency', currency: 'EUR'})new Intl.NumberFormat('de-DE', {style: 'currency', currency: 'EUR'}).format(1234.5) tạo ra đầu ra giống hệt nhau. Sự khác biệt: Intl.NumberFormat có thể tái sử dụng, vì vậy nếu bạn định dạng nhiều số với các tùy chọn giống nhau, hãy khởi tạo một lần và lưu vào bộ nhớ cache. toLocaleString đọc các tùy chọn hàm tạo mỗi lần gọi và chậm hơn đáng kể trong các vòng lặp chặt chẽ.

Hệ thống đánh số của Ấn Độ hoạt động như thế nào?

Tiếng Anh Ấn Độ và tiếng Hindi nhóm các chữ số theo mẫu 2-2-3 thay vì 3-3-3: ba chữ số ngoài cùng bên phải, sau đó là các nhóm hai. 100.000 được viết là 1,00,000 và được gọi là một lakh (10⁵). 10.000.000 được viết là 1,00,00,000 và được gọi là một crore (10⁷). Intl.NumberFormat('en-IN').format(12345678) trả về 1,23,45,678. Hệ thống mở rộng đến arab (10⁹) và kharab (10¹¹) mặc dù chúng hiếm trong sử dụng hiện đại.

Công cụ này có thể xử lý số lớn đến mức nào?

Lên đến Number.MAX_SAFE_INTEGER = 2⁵³ − 1 = 9.007.199.254.740.991, bất kỳ số nguyên nào cũng sống sót qua chuyến đi khứ hồi một cách chính xác. Vượt quá đó, độ chính xác bắt đầu rò rỉ. JSON.parse("9007199254740993") trả về 9007199254740992, double có thể biểu diễn gần nhất. Đối với các giá trị lớn hơn, dán chúng dưới dạng các literal BigInt (với một n ở cuối) hoặc coi chúng như chuỗi. Bộ định dạng chấp nhận cả hai.

Số của tôi có được gửi đi đâu không?

Không. Intl.NumberFormat và dữ liệu locale được vận chuyển cùng với trình duyệt của bạn; toàn bộ pipeline chạy cục bộ. Mở tab Mạng trong DevTools và định dạng một số, bạn sẽ thấy không có yêu cầu đi ra nào. An toàn cho tiền lương, doanh thu, số dư tài khoản, hoặc bất kỳ dữ liệu nào bạn sẽ không dán vào dịch vụ được lưu trữ.

Công cụ liên quan

Trình Chuyển Đổi Cơ Số Số Máy Tính Tỷ Lệ Phần Trăm Máy tính khoa học miễn phí Máy tính lãi suất kép