使用科学计数法的ASP.NET数据验证错误

时间:2020-05-26 08:00:56

标签: asp.net

以科学计数法输入数字时,.net应用程序出现错误。错误消息是:字段衰减常数必须是一个数字。

该字段定义如下:

    [Display(Name = "Decay Constant")] 
    public double? DecayConstant { get; set; }

当它显示在页面上并且我尝试简单地提交表单时(不对数据进行任何更改),其行为如下:

    Decay Constant
    4.3929017451260256E-06 
    The field Decay Constant must be a number.

请注意,我根本没有更新该值,它只是从数据库加载并由.net显示在页面上,但根据验证,其格式不正确。

如果我添加数据格式,我应该能够执行以科学计数法表示。

[DisplayFormat(DataFormatString = "{0:E3}", ApplyFormatInEditMode = true)] 

结果如下:

    Decay Constant
    4.393E-006 
    The field Decay Constant must be a number.

请注意,格式化已成功应用,但是仍然会导致相同的错误。 如果我使用"{0:0.###E+0}"

,也会发生相同的情况

不能使用普通的十进制表示法,并且我有许多字段需要用科学计数法表示。

这似乎是一个错误,或者MS不支持将double作为标准使用。我几乎可以在网上找到的所有人员都不希望使用科学计数法。

请注意,如果您尝试使用此代码,则应记住,如果数字足够小或太大,.net只会以科学计数形式设置双精度格式。因此,很可能您之前使用过double语句而没有任何问题,或者您的代码可能有一天可能由于此问题而失败。

0 个答案:

没有答案
相关问题