我需要一个整数数据类型,从1到10开始为00,从10到99开始为0。
c#
中是否有任何数据类型非常感谢....
答案 0 :(得分:7)
您可以使用几乎任何整数类型(int
,uint
等);重要的是你如何格式它。在这种情况下:
string s = i.ToString("000");
整数数据类型只是值 - 前导零不存在或不存在 - 这不是整数的作用。
您当然可以创建自定义struct
,在构造函数中使用整数值(可能是自定义转换运算符),覆盖ToString()
方法(可能还有Equals
, GetHashCode
等。)
只是为了踢:
public struct TriDigit : IComparable, IComparable<TriDigit>, IComparable<int>, IEquatable<TriDigit>, IEquatable<int>
{
private readonly int value;
public TriDigit(int value)
{
if (value < 0 || value > 999) throw new ArgumentOutOfRangeException("value");
this.value = value;
}
public override string ToString()
{
return value.ToString("000");
}
public override bool Equals(object obj)
{
if (obj == null) return false;
if (obj is TriDigit) return ((TriDigit)obj).value == value;
if (obj is int) return ((int)obj) == value;
return false;
}
public int CompareTo(object obj)
{
if (obj == null) return -1;
if(obj is TriDigit) return value.CompareTo(((TriDigit)obj).value);
if (obj is int) return value.CompareTo((int)obj);
return -1;
}
public override int GetHashCode()
{
return value;
}
public static explicit operator TriDigit(int value)
{
return new TriDigit(value);
}
public static implicit operator int(TriDigit value)
{
return value.value;
}
int IComparable<TriDigit>.CompareTo(TriDigit other)
{
return value.CompareTo(other.value);
}
int IComparable<int>.CompareTo(int other)
{
return value.CompareTo(other);
}
bool IEquatable<TriDigit>.Equals(TriDigit other)
{
return value == other.value;
}
bool IEquatable<int>.Equals(int other)
{
return value == other;
}
}
答案 1 :(得分:2)
听起来你想要一个格式字符串,而不是数据类型。
Console.WriteLine("{0:D3}", i);
答案 2 :(得分:0)
您可以简单地使用int
,或者它必须不是负uint
(无符号整数)。数据类型较小,但对于大多数应用程序而言,它们并不值得担心。
答案 3 :(得分:0)
如果你说你需要一个合法范围从1到10的整数,索引从零开始,那么答案是否定的。你需要自己做一个ADT。
答案 4 :(得分:0)
它是您想要的格式,而不是新的数据类型。在此处阅读所有相关内容:MSDN's page on Custom Numeric Format Strings。
答案 5 :(得分:0)
您可以使用PadLeft(int totalWidth,char paddingChar)之类的..
int myNumber=12
string myStringNumber = myNumber.ToString().PadLeft(3, '0');