我们需要在浏览器表格中显示货币金额,因为这些是数字,所以它们应该是正确对齐的。 日本没有浮点货币的货币存在问题。 所以对他们来说,我们不能显示5。10日元
现在,要求显示如下: (注意十进制货币与非小数的对齐和混合)
5.23
12.00
3.24
5
9
11.00
在上面,5和9是日元,而其他是美元 所以要求是用JPY等货币替换浮点数。需要空间才能使货币正确对齐。 当然,对于其他货币,应该有2位小数。
有谁知道如何做到这一点?
提前多多感谢!!
1)这些值从Java服务器发送并送入JavaScript库SlickGrid 2)我们想要在服务器级别控制值,因为SlickGrid代码不适合这种工作。 3)货币被存储为浮动货币,因为客户希望以这种方式看待货币:(这是正确的,因为大多数人都对美元而不是美分感到困扰,但是,有些人也担心美分。
我真的希望只使用DecimalFormat的一些选项,因为那将是最好的解决方案。 否则,我将不得不求助于解析和字符串按摩的丑陋解决方案。
答案 0 :(得分:2)
永远不应将货币存储为浮点数。它应该始终是您正在使用的最低面额的整数(Yen,Cents,Paise)。
如果您需要使用小于最低自然面额的金额,请将货币存储为表示指定分数的倍数的整数金额。例如,日元的十分之六。
关于格式化,讨论了简单选项here。
答案 1 :(得分: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>