【问题标题】:Does Number.toFixed() use locale conventions?Number.toFixed() 是否使用语言环境约定?
【发布时间】:2011-04-20 07:24:11
【问题描述】:

我正在编写一个 JavaScript 函数,它可以对使用 Number.toFixed() 从数字生成的字符串执行小数位操作。我需要完成的部分工作是在格式化字符串中定位小数点的位置。然而,我开始怀疑 toFixed() 函数是否会使用特定于语言环境的格式(例如,'.' 与 ',' 代表小数点)。如果是这样的话,我不能只搜索“。”。字符,但可能需要搜索逗号,或者可能需要搜索在其他语言环境中使用的其他分隔符。

在 C++ 中,我可以使用 numpunct 语言环境方面来确定使用什么字符,但我不相信 JavaScript 中有任何等效资源可用。然后我的问题变成了 toFixed() 是否会遵守语言环境约定,如果是的话,有没有办法识别浏览器主机上使用的约定?

【问题讨论】:

    标签: javascript localization


    【解决方案1】:

    不,我没有。只有.toLocaleString() 尊重小数分隔符。假设语言环境有 ',' 作为小数点分隔符,Number('42,6') 都不会返回正确的值。

    【讨论】:

    • 您确定所有网络浏览器的行为一致吗?尤其是 Internet Explorer 的本地化版本?
    • @Paweł Dyda,连 IE8 都兼容
    【解决方案2】:
    // You can always ask-
    
    Number.decimalChar= (function(){
        return (3/5).toLocaleString().charAt(1)
    })()
    
    alert(Number.decimalChar)
    

    【讨论】:

    • 不够好,除非您也将其调整为适用于数千个分隔符 - 例如,尝试 (1000.1).toLocaleString('fr')。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-13
    相关资源
    最近更新 更多