0

我们需要在浏览器表格中显示货币金额,因为这些是数字,所以它们应该是右对齐的。问题在于像日本这样没有浮点货币的货币。所以对他们来说,我们不能显示 5.10 日元

现在,要求是显示如下内容:(注意十进制货币与非十进制货币的对齐和混合)

  5.23
 12.00
  3.24
  5
  9
 11.00

在上面,5 和 9 是日元,而其他的是美元所以要求是用空格替换浮点数,用于像日元这样的货币。需要空格才能正确对齐货币。当然,对于其他货币,小数点后 2 位应该在那里。

有谁知道如何完成上述操作?

非常感谢提前!!


根据以下回复:

1) 值从 Java 服务器发送并馈送到 JavaScript 库 SlickGrid 2) 我们希望在服务器级别控制值,因为 SlickGrid 代码不太适合这种工作。3)货币被存储为浮动,因为客户希望以这种方式查看它们:(这是正确的,因为大多数人关心的是美元而不是美分,但是,有些人也关心美分。

我真的希望只有 DecimalFormat 有一些选项,因为那将是最好的解决方案。否则我将不得不求助于解析和字符串按摩的丑陋解决方案。

4

2 回答 2

3

货币永远不应存储为浮点数。它应该始终是您使用的最低面额的整数(日元、美分、派斯)。

如果您需要使用小于最低自然面额的金额,请将货币存储为表示指定分数倍数的整数金额。例如日元的十分之六。

至于格式,这里有简单选项的讨论。

于 2013-02-02T04:39:48.530 回答
0

以下CSS基本上取自jsj答案中的链接(提取最相关的部分)

仅 HTML 版本:

td { font-family: monospace; }
span.int {
  text-align: right;
  float: left;
  width: 3em;
}

span.fractional {
  text-align: left;
  float: right;
  width: 2em;
}
<table>
    <tr><td><span class="int">5</span><span class="fractional">.23</span></td></tr>
    <tr><td><span class="int">12</span><span class="fractional">.00</span></td></tr>
    <tr><td><span class="int">3</span><span class="fractional">.24</span></td></tr>
    <tr><td><span class="int">5</span><span class="fractional"></span></td></tr>
    <tr><td><span class="int">9</span><span class="fractional"></span></td></tr>
    <tr><td><span class="int">11</span><span class="fractional">.00</span></td></tr>
</table>

JavaScript 版本:

function spanInt(content){ var span = document.createElement('span');span.className = 'int'; span.textContent = content; return span; }
function spanFractional(content){ var span = document.createElement('span'); span.className = 'fractional'; span.textContent = content; return span;}
function tableCell_int(value){
  var td = document.createElement('td');
  td.appendChild(spanInt(value));
  td.appendChild(spanFractional(''));
  return td;
}
function tableCell_float(value){
  var intPart = Math.floor(value);
  var fracPart = value - intPart;
  var td = document.createElement('td');
  td.appendChild(spanInt(intPart));
  td.appendChild(spanFractional('.' + Math.round(100*fracPart)));
  return td;
}
function tr(cell){
  var elt = document.createElement('tr');
  elt.appendChild(cell);
  return elt;
}
var theTable = document.getElementById('theTable');
function add_int(value){ theTable.appendChild(tr(tableCell_int(value))); }
function add_float(value){ theTable.appendChild(tr(tableCell_float(value))); }

add_float(5.23); add_float(12); add_float(3.24);
add_int(5); add_int(9); add_float(11);
td { font-family: monospace; }
span.int {
  text-align: right;
  float: left;
  width: 3em;
}

span.fractional {
  text-align: left;
  float: right;
  width: 2em;
}
<table id='theTable'></table>

于 2020-06-27T17:30:28.300 回答