【问题标题】:Unable to Display a double type value upto two decimal values if the number is not a double value如果数字不是双精度值,则无法显示最多两个十进制值的双精度类型值
【发布时间】:2014-08-07 23:11:12
【问题描述】:

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

型号

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

淘汰 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;
                })));
            }
        });
    }

我可以知道一个更好的方法来处理这个问题并将值显示为两个十进制值

【问题讨论】:

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


    【解决方案1】:

    您可能想看看 NumeralsJS 库:

    http://numeraljs.com/

    还有这个:

    Javascript: Easier way to format numbers?

    【讨论】:

      【解决方案2】:

      在您的绑定中,使用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!' "
      

      【讨论】:

      • 谢谢,但是当 Bid 或 Offer 为 null 时,这将失败
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-23
      • 1970-01-01
      相关资源
      最近更新 更多