当我编译并运行以下代码时,它会抛出以下异常:
未处理的异常:System.FormatException:指定的格式“X”无效 在System.NumberFormatter.NumberToString(System.String format,System.Globalization.NumberFormatInfo nfi)[0x00000] in:0 at System.NumberFormatter.NumberToString(System.String format,Decimal value,IFormatProvider fp)[0x00000] in:0 在System.Decimal.ToString(System.String格式,IFormatProvider提供程序)[0x00000] in:0 在System.Decimal.ToString(System.String格式)[0x00000]中:0 在Program.Main()
using System;
class Program
{
static void Main()
{
decimal result = 1454787509433225637;
//both these lines throw a formatexception
Console.WriteLine(result.ToString("X"));
Console.WriteLine(string.Format("{0:x}", result));
}
}
为什么会这样?根据{{3}},这应该编译好(并输出“14307188337151A5”)。
答案 0 :(得分:6)
基于MSDN article的X格式类型,您只能使用积分类型。
结果:十六进制字符串。 支持者:仅限积分类型。 精度说明符:结果字符串中的位数。更多 信息:HexaDecimal(“X”)格式说明符。
因此,您需要指定 int 而不是十进制。因为十六进制格式仅存在于整数值。
答案 1 :(得分:1)
将您的代码更改为:
int result = 1454787509433225637;