首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >换算金额错误

换算金额错误
EN

Stack Overflow用户
提问于 2015-04-10 21:50:15
回答 1查看 70关注 0票数 3

下面的函数运行得很完美,但是当数量超过100万时,该函数就不能正常工作。

示例: AMOUNTPAID = 35555输出为: 35.555,00 -工作良好

但是,当支付金额为: 1223578 (超过100万)时,是以下产出值: 1.223.235,00 (但必须是: 1.223.578,00) -偏差为343%

有什么想法吗?

我通过HTML调用函数,如下所示:

代码语言:javascript
复制
<td class="tr1 td2"><p class="p2 ft4"><script type="text/javascript">document.write(ConvertBetrag('{{NETAMOUNT}}'))</script> €</P></TD>

下面是Javascript:

代码语言: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;
    }
EN

回答 1

Stack Overflow用户

发布于 2015-04-10 22:02:36

JavaScript的Math函数有一个toLocaleString method。你为什么不直接用这个呢?

代码语言:javascript
复制
var n = (1223578.00).toLocaleString();
-> "1,223,578.00"

您希望使用的区域设置可以作为参数传入,例如:

代码语言:javascript
复制
var n = (1223578.00).toLocaleString('de-DE');
-> "1.223.578,00"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29563201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档