当我编写一段处理一些浮点值的JavaScript代码时,一个想法让我感到震惊.JavaScript中的小数点符号是什么?它总是.吗?还是文化特有的?并且怎么样.toFixed()和.parseFloat()?如果我正在处理用户输入,则可能包含本地特定于文化的小数点分隔符号.
最终,我想编写支持用户输入中的两个小数点的代码 - 特定于文化.,但如果我不知道JavaScript期望什么,我就不能编写这样的代码.
补充:好的,Rubens Farias 建议查看类似的问题,其中有一个很好的接受答案:
function whatDecimalSeparator() {
var n = 1.1;
n = n.toLocaleString().substring(1, 2);
return n;
}
Run Code Online (Sandbox Code Playgroud)
这很好,它让我得到locale小数点.毫无疑问,迈向解决方案的一步.
现在,剩下的部分将是确定行为.parseFloat()是什么.几个答案指出,对于浮点文字只有.有效.是否.parseFloat()采取同样的方式?或者它可能在某些浏览器中需要本地小数点分隔符?是否有任何不同的方法来解析浮点数?我应该推出我自己的即将到来的吗?
我正在测试一个网站的伪本地化.
我可以将Internet Explorer配置为具有自定义接受语言:
qps-ploc(即Pseudo(Base)语言环境)
现在,当Internet Explorer发出http请求时,接受语言将引导qpc-ploc:
GET https://stackoverflow.com/ HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Accept-Language: qps-ploc,en-US;q=0.5
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E)
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: stackoverflow.com
Run Code Online (Sandbox Code Playgroud)
如何对Chrome执行相同的更改?到Firefox?
更新
还应注意,Internet Explorer 尊重我的Windows首选项.我的Windows配置为使用 …
localization google-chrome internationalization pseudolocalization http-accept-language
Windows Vista引入了三种伪语言环境的概念:
Pseudo Locale Locale Name LCID
=================== =========== ======
Base qps-ploc 0x0501
Mirrored qps-mirr 0x09ff
East Asian-language qps-asia 0x05fe
Run Code Online (Sandbox Code Playgroud)
启用Base语言环境非常有用,因为您可以检查应用程序是否使用当前语言环境来设置日期,时间,数字,金钱等项目的格式.
例如,当前区域设置设置为Base时,日期将格式化为:
[Шěđлеśđαỳ!!!],8ōf[Μäŕςћ!!]ōf2006

使用这些语言环境的另一个值:它测试您的应用程序不会假设16位PRIMARYLANGID由以下内容组成:
或图形化:
+-----------------------+-------------------------+
| Sublanguage ID | Primary Language ID |
+-----------------------+-------------------------+
15 10 9 0 bit
Run Code Online (Sandbox Code Playgroud)
这三个伪语言环境终于走到了第8位的末尾(微软一直厌倦了打破错误的应用程序).
如何在Windows中启用伪语言环境?
windows localization internationalization windows-7 pseudolocalization
有没有办法使用html5数字输入类型同时允许逗号和点作为分隔符?我发现了十进制分隔符属性,但似乎只需要一个分隔符...
在我的应用程序中,有几个地方需要用户输入货币值。该应用程序支持以多种货币以及本地化存储这些货币值。
我正在使用Javascript中的Intl.NumberFormat对象将数字格式化为所需的任何货币和语言环境,但是无法使用它来对数字进行格式化。
到目前为止,我发现的所有库都要求您提供小数和千位分隔符,以便格式化/取消格式化功能起作用。但是,我需要一种方法来首先查找小数和千位分隔符,因此我不能使用它们。
如何可靠地获取当前语言环境的小数点分隔符?