0

有点困惑,我尝试在我的信用卡详细信息和电话中使用 int 数据类型的最大和最小长度,但我不知道如何去做。

    [Required(ErrorMessage = "Telephone is required")]
    public int Telephone { get; set; }
    [Required(ErrorMessage = "Card Type is required")]
    [DisplayName("Card Type")]
    [StringLength(20)]
    public string CardType { get; set; }
    [Required(ErrorMessage = "Card Holders Name is required")]
    [DisplayName("Card Holders Name")]
    [StringLength(160)]
    public string CardHoldersName { get; set; }
    public int CardNumber { get; set; }
    public int CardExpMonth { get; set; }
    public int CardExpYear { get; set; }
    [ScaffoldColumn(false)]
    public decimal Total;
4

3 回答 3

4

为什么将卡号存储为整数?字符串不是更合适吗?

字符串可以处理您需要的任何 cc 号码。它还可以处理(用于进一步处理)用户在数字之间输入空格的情况。

于 2012-04-17T02:38:59.397 回答
1

如果要以CardNumber数字格式存储 ,请使用long. 一个 32 位签名int的最大值是2,147,483,647——记住,int是它的同义词System.Int32——远不足以容纳一个 16 位的信用卡号。A long(aka System.Int64)的最大值为9,223,372,036,854,775,807,因此它可以容纳每个 18 位数字。

请注意,a uint(无符号 32 位整数)仍然不够大,因为它的最大值仅为4,294,967,295.

于 2012-04-17T02:35:34.473 回答
0

使用BigInteger命名空间中可用的结构System.Numerics

我认为这对你有用

http://msdn.microsoft.com/en-us/library/system.numerics.biginteger.aspx

在 .NET 中处理令人难以置信的大量数字

http://www.codeproject.com/Articles/2728/C-BigInteger-Class

于 2012-04-17T03:44:48.697 回答