如果数字不是double值,则无法显示最多两个十进制值的double类型值

时间:2014-06-17 19:57:56

标签: c# javascript asp.net-mvc-4 knockout.js

我有一个asp.net mvc应用程序,它使用knockout Js和Odata将数据从数据库表显示到网页。在我的模型中,我有几个Double类型值的条目,当我在网页上显示它时,如果值为2.05,则可以正常工作,但当值为2的类型为2.5时出现问题它只显示2和2.5而不是我想要两个小数点,分别是2.00和2.50。

模型

public int Id { get; set; }
public double? Bid { get; set; }
public double? Offer { get; set; }

Knockout JS

self.getverticaldata = function () {
        $.ajax({
            dataType: "json",
            url: '/odata/CC',
            data: ko.toJSON(self.products),
            async: false,
            success: function (data) {
                self.datainput((ko.utils.arrayMap(data.value, function (canadiancrude) {
                    var obsCanadianCrude = {
                        Id: canadiancrude.Id,
                        Bid: ko.observable(canadiancrude.Bid),
                        Offer: ko.observable(canadiancrude.Offer),

                    }

                    return obsCanadianCrude;
                })));
            }
        });
    }

我可以知道更好的方法来处理这个并显示最多两位小数值

2 个答案:

答案 0 :(得分:1)

在您的绑定中,请使用toFixed

data-bind="text: Bid().toFixed(2)"
data-bind="text: Offer().toFixed(2)"

这将显示2.002.50

<强>更新

要处理nullundefined,您可以显示空字符串或一些占位符。

data-bind="text: (typeof Bid() === 'number') ? Bid().toFixed(2) : '' "
data-bind="text: (typeof Offer() === 'number') ? Offer().toFixed(2) : 'Not Exist!' "

答案 1 :(得分:0)

您可能需要查看NumeralsJS库:

http://numeraljs.com/

还有这个:

Javascript: Easier way to format numbers?