JavaScript 中的文化敏感 ParseFloat 函数?
有人建议在 JavaScript 中编写文化敏感的 ParseFloat 函数吗?这样,当我有美国文化格式的字符串 100,000.22 时,解析 float 函数返回 100000.22,而如果我在瑞典文化中输入 100.000,22 ,它会返回 float 形式的 100000.22 ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
我改进了 mwilcox 的函数来处理没有分隔符的值。
I've improved mwilcox' function to handle values withous separators.
这有点粗糙,但可能已经足够了,允许您传递千位和小数分隔符:
示例:
注意,这并不能确保千位分隔符确实代表千位等,或者确实代表千位分隔符。您可能希望执行许多其他保护措施,具体取决于功能的重要性。
This is a bit rough-and-ready, but it may be sufficient, allowing you to pass in the thousands and decimal separators:
Examples:
NB that this doesn't ensure that the thousands separator really does represent thousands, etc., or do lots of other safeguarding that you may wish to do, depending on the importance of the function.
我只是检查倒数第三个位置是否有逗号。如果您没有逗号(例如 100.000),可以进一步细化以检查倒数第四个位置是否有句点
I'm just checking if there is a comma in the 3rd-to-last position. This could be further refined to check if there is a period in the 4th to last position in the case thee is no comma (such as 100.000)
看着 lonesomday 给了我这样的想法:
你也可以这样做:
Looking at lonesomday's gave me this thought:
You could also do:
这是一个粗略的函数。它将假定最后一个标点符号表示小数,无论它是逗号、句点还是您可能需要表示的任何其他字符。然后它会从整个数字中删除其他标点符号。将其放回一起并解析为浮点数。
试试这个:
Here is a rough function. It will assume the last punctuation to indicate decimals, whether it is a comma, period, or any other character you may need to indicate. It then eliminates other punctuations from the whole number. Puts it back together and parses as float.
try this:
需要来自文化信息的当前组和小数分隔符。
Need your current Group and Decimal Separator from Culture Info.
如果您确实想在 JavaScript 的不同语言环境中显示和/或解析浮点数(或日期或货币等),那么我的推荐是 GlobalizeJS (https://github.com/globalizejs/globalize)库。
一开始设置起来有点困难(至少根据我的经验),但完全建议您妥善管理此事。
If you really for displaying and/or parsing floats (or dates or currencies or more) in different locales for JavaScript, then my recommendation is the GlobalizeJS (https://github.com/globalizejs/globalize) library.
It's a bit tough to set up at first (at least it was in my experience), but totally recommended for proper management of this matter.