我需要用两个十进制格式显示值。

当显示值时,为什么在这种情况下toFixed函数不起作用

我在浏览器控制台下收到以下错误

未捕获的TypeError:tax_value.toFixed不是函数

这是我的代码

var orderjson =
    {
        "display": {
            "ServiceCharge": "1",
            "ServiceTax": "2",
            "order": [
                "ServiceCharge",
                "ServiceTax",
                "VAT",
                "DISCOUNT"

            ],
            "VAT": "3",
            "OTH1": "4",
            "DISCOUNT": "5"
        }
    }


var orderOfDisplay = orderjson.display.order;

var ServiceCharge = orderjson.display.ServiceCharge;
var ServiceTax = orderjson.display.ServiceTax;
var VAT = orderjson.display.VAT;
var OTH1 = orderjson.display.OTH1;
var DISCOUNT = orderjson.display.DISCOUNT;

var htmldata =  '';

for(var i=0;i<orderOfDisplay.length;i++)
{
    var tax_value = orderjson.display[orderOfDisplay[i]];
    tax_value = tax_value.toFixed(2);
     htmldata+= '<tr><td align="right" valign="middle" width="50%">'+orderOfDisplay[i]+'</td> \
    <td align="right" valign="middle" width="50%">Rs. '+tax_value+'</td> \
    </tr>';


}

$("#tableid").append(htmldata);


http://jsfiddle.net/2kbet2hL/9/

在这种情况下,有人可以让我知道如何显示两位小数吗?

最佳答案

字符串没有toFixed方法,当您调用该方法时,tax_value仍然是字符串。

由于某种原因,您的JSON数据将所有数字编码为字符串("3"3)。这不是真的正确,因此您应该使服务仅返回简单数字。

如果需要强制将字符串变成数字,则应使用parseIntparseFloat。您的代码将更改为:

tax_value = parseFloat(tax_value).toFixed(2);


在当前代码中,在typeof行之前使用toFixed运算符将显示当时tax_value的类型。在您的示例中,它显示"string"(和typeof "".toFixed === 'undefined',证明该方法不存在)。

关于javascript - 为什么.toFixed(2)在这种情况下不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29751266/

10-12 16:03