舍入浮点数,然后转到语言环境字符串
Posted
技术标签:
【中文标题】舍入浮点数,然后转到语言环境字符串【英文标题】:Round float and then to locale string 【发布时间】:2015-05-07 08:37:02 【问题描述】:我有一个奇怪的例子。 如果我这样写:
parseFloat("12345,987").toLocaleString("slv")
结果将如预期(slv 有逗号作为小数分隔符): 12.345,987
但如果我先四舍五入到小数点后两位:
parseFloat("12345,987").toFixed(2).toLocaleString("slv")
结果总是带有英文分隔符(点):
12,345.99
这怎么可能?
应该是:12.345,99
【问题讨论】:
parseFloat的输出是一个数字,toFixed的输出是一个字符串。 【参考方案1】:如this answer 中所述,parseFloat()
只能与小数一起使用,因此使用逗号传递字符串可能会导致意外结果。
例如,我在 JsFiddle 中尝试了parseFloat("12345,987").toLocaleString("slv")
,而我的浏览器(英国语言环境)给了我12.345
,这与您的结果不同。
还有一点需要注意的是,toFixed()
返回一个字符串,但toLocaleString()
对数字进行操作。将toLocaleString()
应用于字符串也可能出于其他原因产生意外结果。
【讨论】:
【参考方案2】:谢谢。我找到了一个解决方案: parseFloat("12345,987").toLocaleString("slv", minimumFractionDigits: 2, maximumFractionDigits: 2 );
这工作正常。 "比如我试过 parseFloat("12345,987").toLocaleString("slv")"
"djskinner" - 你可以试试:"sl-SI" 而不是 slv?还是不行吗?
【讨论】:
以上是关于舍入浮点数,然后转到语言环境字符串的主要内容,如果未能解决你的问题,请参考以下文章