【问题标题】:LocalString method for german currency?德国货币的LocalString方法?
【发布时间】:2015-05-05 13:16:33
【问题描述】:
var n = (1223578.00).toLocaleString('de-DE');

应该是->“1.223.578,00”,但是输出是:1.223.578(小数位缺失)

怎么了?

<script type="text/javascript">var amount= '{{currency1}}';</script>

这是由 SQL 填写的表格,currency1 = 1223578.00

如何使用这个占位符?

【问题讨论】:

标签: javascript jquery


【解决方案1】:

将 minimumFractionDigits 属性设置为所需的位数。

var n = (1223578.00).toLocaleString('de-DE',{ minimumFractionDigits: 2 });

产生:1.223.578,00

上述功能可能不适用于所有浏览器。为确保在所有浏览器上的结果相同,您可以手动创建字符串,如下所示:

修改自:https://stackoverflow.com/a/16157942/4347337

function DelocaleString(x, sep, grp, dec) {
  //add decimals
  var y = x.toFixed(dec);
  //strip decimals
  var x_integer = y.split('.')[0];
  var x_fraction = y.split('.')[1];
  var x_fractionString = "";
  if (dec > 0) {
    x_fractionString = ',' + x_fraction;
  }
  var sx = ('' + x_integer).split('.'),
    s = '',
    i, j;
  sep || (sep = ' '); // default seperator
  grp || grp === 0 || (grp = 3); // default grouping
  i = sx[0].length;
  while (i > grp) {
    j = i - grp;
    s = sep + sx[0].slice(j, i) + s;
    i = j;
  }
  s = sx[0].slice(0, i) + s;
  sx[0] = s;
  return sx.join('.') + x_fractionString
}

示例

$().ready(function() {
  $('#convertBtn').click(function() {
    ConvertNumber();
  });
});

function ConvertNumber() {
  var input = $('#in').val();
  if ($.isNumeric(input)) {
    $('#out').val(DelocaleString(+input, '.', 3, 2));
  } else {
    $('#out').val('Input is not a number!');
  }
}

function DelocaleString(x, sep, grp, dec) {
  //add decimals
  var y = x.toFixed(dec);
  //strip decimals
  var x_integer = y.split('.')[0];
  var x_fraction = y.split('.')[1];
  var x_fractionString = "";
  if (dec > 0) {
    x_fractionString = ',' + x_fraction;
  }
  var sx = ('' + x_integer).split('.'),
    s = '',
    i, j;
  sep || (sep = ' '); // default seperator
  grp || grp === 0 || (grp = 3); // default grouping
  i = sx[0].length;
  while (i > grp) {
    j = i - grp;
    s = sep + sx[0].slice(j, i) + s;
    i = j;
  }
  s = sx[0].slice(0, i) + s;
  sx[0] = s;
  return sx.join('.') + x_fractionString
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

<form class="form-horizontal" style="max-width:350px;">
  <div class="form-group">
    <label for="in" class="col-sm-2 control-label">Input</label>
    <div class="col-sm-10">
      <input type="text" class="form-control" id="in" placeholder="Allowable formats: 123.456789, 123456789">
    </div>
  </div>
  <div class="form-group">
    <label for="out" class="col-sm-2 control-label">Output</label>
    <div class="col-sm-10">
      <input type="text" class="form-control" id="out" placeholder="Formatted Number" readonly>
    </div>
  </div>
  <div class="form-group">
    <div class="col-sm-offset-2 col-sm-10">
      <button class="btn btn-default" id="convertBtn">Convert Number</button>
    </div>
  </div>
</form>

【讨论】:

  • 在 Chrome 42.0 和 IE 11 中测试
  • 好答案,虽然 Safari 似乎不支持 developer.mozilla.org/en/docs/Web/JavaScript/Reference/…
  • 谢谢 :-) 它不适用于 safari 没关系,因为我将它用于工具“wkhtmltopdf”
  • @Brino 编辑我的问题,因为我不使用数字,我使用占位符来表示 wkhtmltopdf
  • 应该是一样的。如果是字符串,只需先使用 Number() 将其转换为数字,然后应用相同的公式
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-02
  • 1970-01-01
  • 2010-09-19
  • 2023-04-04
  • 1970-01-01
  • 2014-09-15
  • 2019-05-14
相关资源
最近更新 更多