【问题标题】:parseFloat in JS for German notationJS 中的 parseFloat 用于德语表示法
【发布时间】:2018-10-27 20:41:25
【问题描述】:

目前我正在尝试实现一个基于此示例的 Vue.js 组件:https://jsfiddle.net/mani04/bgzhw68m/

这是我的源代码的样子:

computed: {
            displayValue: {
                get: function get() {
                    if (this.isInputActive) {
                        return this.price.toString();
                    } else {
                        return "€ " + this.price.toFixed(2).replace(/(\d)(?=(\d{3})+(?:\.\d+)?$)/g, "$1,");
                    }
                },
                set: function set(modifiedValue) {
                    var newValue = parseFloat(modifiedValue.replace(/[^\d\.]/g, ""));

                    if (isNaN(newValue)) {
                        newValue = 0;
                    }

                    this.price = newValue;
                }
            }
        }

这适用于1.001,300,500.25 等值。

现在我想用德语写这些花车:

在德国,我们将1.000.000,50 写成one million and 50 cent。所以你看:,. 被替换了。

那么如何更改我的脚本以使其使用此表示法?真的很重要,我仍然可以使用float

【问题讨论】:

  • 如果您想要一个强大的解决方案来解析不同语言环境中的数字,请考虑使用numeral

标签: javascript jquery vue.js


【解决方案1】:

您可以将小数点分隔符替换为,,然后使用货币格式分隔符。

例如:

var price = 332245567
var priceStr=price.toFixed(2).replace(".", ",").replace(/(\d)(?=(\d{3})+(?:\,\d+)?$)/g, "$1.");
console.log(priceStr)

我更新了你的fiddle

【讨论】:

  • 您好,非常感谢。不幸的是,10,20(即10.20)的输入没有正确显示。变成1020
猜你喜欢
  • 2016-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-23
  • 2021-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多