7

Tôi đang cố gắng chuyển đổi số thành chuỗi được bản địa hóa.Ký hiệu lũy thừa theo địa chỉ?

Đối với số nguyên và giá trị tiền, nó khá đơn giản, vì chuỗi chỉ là một chuỗi các chữ số và phân tách nhóm chữ số. Ví dụ:

  • 12 345 678 901 (Bulgaria)
  • 12.345.678.901 (Catalan)
  • 12,345,678,901 (tiếng Anh)
  • 12,34,56,78,901 (Tiếng Hin-ddi)
  • 12.345.678.901 (Frisian)
  • 12?345?678?901 (Pashto)
  • 12'345'678'901 (tiếng Đức)

tôi sử dụng chức năng Windows GetNumberFormat để định dạng số nguyên (và GetCurrencyFormat để định dạng giá trị tiền).

Nhưng một số con số không thể được biểu diễn một cách hợp lý trong ký hiệu cố định, và yêu cầu scientific notation:

  • 6,0221417930 × 10

hay cụ thể hơn E notation:

  • 6.0221417930E23

Tôi làm cách nào để có được phiên bản ký hiệu khoa học được bản địa hoá?

tôi giả sử tôi có thể xây dựng nó sử dụng số cục bộ:

6.0221417930E23 
6,0221417930E23 
6.0221417930e23 
6·0221417930E23 
6·0221417930e23 
6,0221417930e23 
6,,0221417930e23 
6.0221417930E+23 
6,0221417930E+23 
6.0221417930e+23 
6,0221417930e+23 
6·0221417930E+23 
6·0221417930e+23 
6,,0221417930e+23 
6.0221417930E23 
6,0221417930E23 
6.0221417930e23 
6,0221417930e23 
6·0221417930E23 
6·0221417930e23 
6,,0221417930e23 
6.0221417930X10^23 
6,0221417930X10^23 
6.0221417930x10^23 
6,0221417930x10^23 
6·0221417930X10^23 
6·0221417930x10^23 
6,,0221417930x10^23 
6.0221417930·10^23 
6,0221417930·^23 
6.0221417930.10^23 
6,0221417930.10^23 
6·0221417930·^23 
6·0221417930.10^23 
6,,0221417930.10^23 

nhưng tôi không biết nếu các nền văn hóa khác (văn hóa bên cạnh mỏ) sử dụng một E cho lũy thừa.

+0

Chỉ cần một lưu ý - đó thực sự là một câu hỏi thực tế và trung thực: có thực sự nền văn hóa nơi phần thập phân của giá trị thập phân có một "nghìn" phân cách? – Romain

+0

@Romain: tôi không thấy bất kỳ ngôn ngữ nào trong Windows gây 'GetNumberFormat' để sử dụng bất kỳ nhóm chữ số nào. –

Trả lời

4

Theo hiểu biết tốt nhất của tôi, ký pháp lũy thừa không phải là một phần của dữ liệu cục bộ Windows hoặc .NET. Tuy nhiên, có thể giúp Unicode CLDRonce again: <numbers> phần của nó chứa những gì bạn đang tìm kiếm:

/numbers/symbols/exponential nói E hoặc tương đương của nó trong nền văn hóa nhất định.

/numbers/scientificFormats/ hiển thị mẫu số mũ.

Bạn cần tải xuống zipped core CLDR data và trích xuất tệp cho mỗi nền văn hóa bạn quan tâm từ thư mục common/main.

Nếu bạn muốn có thể hỗ trợ tất cả các nền văn hóa, bạn sẽ phải thu thập thông tin liên quan từ tất cả các tệp văn hóa và đóng gói nó vào DB cụ thể của riêng bạn. Không phải là một công việc tầm thường nhưng nó có thể.

Tôi đã xem nhanh dữ liệu trong một số nền văn hóa rất khác nhau như vi, fr, zh, ru, vi, ar: Tất cả đều chứa cùng một mẫu: #E0. Dường như dữ liệu không chính xác (tôi nghiêm túc nghi ngờ) hoặc bạn không cần phải quan tâm thực sự: Mọi người đều làm theo cách tương tự và bạn không nên thực sự quan tâm.

0

Đối với tiếng Ba Lan, nó phải là 6.0221417930 · 10 .
Tôi không nghĩ CLDR đề cập bởi Serge (câu trả lời tuyệt vời BTW) là hợp lệ ở đây. Tuy nhiên, nó vẫn là nguồn thông tin tốt nhất. Nếu không, bạn sẽ cần phải yêu cầu dịch giả của bạn để dịch các mô hình cho bạn (mà sẽ yêu cầu một bình luận với lời giải thích tốt những gì bạn đang lên đến).

Các vấn đề liên quan