Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Intl.NumberFormat和react数字格式库格式化输入值_Javascript_Reactjs_Typescript - Fatal编程技术网

Javascript 使用Intl.NumberFormat和react数字格式库格式化输入值

Javascript 使用Intl.NumberFormat和react数字格式库格式化输入值,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我正在尝试设置一个完全本地化的输入字段,并相应地格式化数值 到目前为止,我的格式设置如下: function format(val: string) { const formatConfig = { minimumFractionDigits: 0, maximumFractionDigits: 6, }; if (val[val.length - 1] === ".") { return new Intl.Num

我正在尝试设置一个完全本地化的输入字段,并相应地格式化数值

到目前为止,我的格式设置如下:

function format(val: string) {
    const formatConfig = {
      minimumFractionDigits: 0,
      maximumFractionDigits: 6,
    };

    if (val[val.length - 1] === ".") {
      return new Intl.NumberFormat(intl.locale, formatConfig).format(parseFloat(`${val}1`)).slice(0, -1);
    } else {
      return intl.formatNumber(parseFloat(val));
    }
  }

  function removeFormatting(val: string) {
    const reversed = reverseNumberFormat(val, intl.locale).toString();
    if (val[val.length - 1] === ".") {
      return `${reversed}.`;
    } else {
      return reversed;
    }
  }
因为我使用的是react数字格式库,所以我在这样的代码中使用它

返回

我这里有两个问题

  • 我不能输入超过3个小数点 要点。如果我尝试输入第四个数字,他会开始将小数点四舍五入 上升一点
  • 例如:

    我输入123521.251,函数将其格式化为123522.251 如果我按下键盘上的键“5”(或大于5的任何数字),他会将其转换为123522.252

    我试着用最小/最大分数数字玩这个游戏,但对我不起作用

  • 当我要格式化货币输入,并添加 将以下参数添加到我的格式变量:
  • 如果我输入“12452”,它的格式将是12452-这是正确的,但美元符号直到我按“.”-小数点后才会出现。在那一刻之后,如果我试图按下键盘上的任何数字,输入值将变为“NaN”

    我正在使用React+Typescript进行此操作

    style: "currency",
    currency: "USD"