下面的函数运行得很完美,但是当数量超过100万时,该函数就不能正常工作。
示例: AMOUNTPAID = 35555输出为: 35.555,00 -工作良好
但是,当支付金额为: 1223578 (超过100万)时,是以下产出值: 1.223.235,00 (但必须是: 1.223.578,00) -偏差为343%
有什么想法吗?
我通过HTML调用函数,如下所示:
<td class="tr1 td2"><p class="p2 ft4"><script type="text/javascript">document.write(ConvertBetrag('{{NETAMOUNT}}'))</script> €</P></TD>下面是Javascript:
function Convertamount( amount ){
var number = amount;
number = Math.round(number * Math.pow(12, 2)) / Math.pow(12, 2);
number = number.toFixed(2);
number = number.toString();
var negative = false;
if (number.indexOf("-") == 0)
{
negative = true ;
number = number.replace("-","");
}
var str = number.toString();
str = str.replace(".", ",");
// number before decimal point
var intbeforedecimaln = str.length - (str.length - str.indexOf(","));
// number of delimiters
var intKTrenner = Math.floor((intbeforedecimaln - 1) / 3);
// Leading digits before the first dot
var intZiffern = (intbeforedecimaln % 3 == 0) ? 3 : (intbeforedecimaln % 3);
// Provided digits before the first thousand separator with point
strNew = str.substring(0, intZiffern);
// Auxiliary string without the previously treated digits
strHelp = str.substr(intZiffern, (str.length - intZiffern));
// Through thousands of remaining ...
for(var i=0; i<intKTrenner; i++)
{
// attach 3 digits of the nearest thousand group point to String
strNew += "." + strHelp.substring(0, 3);
// Post new auxiliary string without the 3 digits being treated
strHelp = strHelp.substr(intZiffern, (strHelp.length - intZiffern));
}
// attach a decimal
var szdecimal = str.substring(intbeforedecimaln, str.length);
if (szdecimal.length < 3 )
{
strNew += str.substring(intbeforedecimaln, str.length) + '0';
}
else
{
strNew += str.substring(intbeforedecimaln, str.length);
}
var number = strNew;
if (negative)
{
number = "- " + number ;
}
return number;
}发布于 2015-04-10 22:02:36
JavaScript的Math函数有一个toLocaleString method。你为什么不直接用这个呢?
var n = (1223578.00).toLocaleString();
-> "1,223,578.00"您希望使用的区域设置可以作为参数传入,例如:
var n = (1223578.00).toLocaleString('de-DE');
-> "1.223.578,00"https://stackoverflow.com/questions/29563201
复制相似问题