簡體   English   中英

在不同的語言環境中使用 parseFloat()

[英]Using parseFloat() in different locales

我有一個使用.toLocaleString()格式化的輸入字段。

然后我需要對該值使用parseFloat()將其轉換為數字。

要在美國語言環境中執行此操作,我只需在執行parseFloat()之前使用value.replace(',','')去除小數。

但是,這在千位分隔符和小數點被反轉的歐洲語言環境中不起作用。

有沒有一種方法可以確定您的用戶所在的語言環境,然后是否先反轉逗號和小數?

您可以使用toLocaleString首先查看示例數字如何轉換為字符串,然后從該輸出中了解語言環境的分隔符是什么,並使用該信息來解析字符串:

 function localeParseFloat(s, locale) { // Get the thousands and decimal separator characters used in the locale. let [,thousandsSeparator,,,,decimalSeparator] = 1111.1.toLocaleString(locale); // Remove thousand separators, and put a point where the decimal separator occurs s = Array.from(s, c => c === thousandsSeparator ? "" : c === decimalSeparator ? "." : c).join(""); // Now it can be parsed return parseFloat(s); } console.log(parseFloat(localeParseFloat("1.100,9"))); // user's locale console.log(parseFloat(localeParseFloat("1.100,9", "us"))); // US locale console.log(parseFloat(localeParseFloat("1.100,9", "nl"))); // Dutch locale: reversed meaning of separators // And the same but with separators switched: console.log(parseFloat(localeParseFloat("1,100.9"))); // user's locale console.log(parseFloat(localeParseFloat("1,100.9", "us"))); // US locale console.log(parseFloat(localeParseFloat("1,100.9", "nl"))); // Dutch locale: reversed meaning of separators

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM