我正在用 C# 编程,我想要做的是将它转换为string
包含一个似乎是 a 的值double
,所以我首先将转换string
为 a double
,然后我将其类型转换double
为 a unsigned long
。唯一的问题是,unsigned long
总是比我假设接收的值大几位或低几位。但是在我将其类型转换double
为之后unsigned long
,我将其转换为十六进制string
并填充它。
这是我正在做的一个例子:
string ValueToParse = "2.53327490880368E+15";
double nValue1 = double.Parse(ValueToParse);
ulong nValue2 = (ulong)nValue1;
string str = nValue2.ToString("X16");
以下是结果:
string str = "00090000070EC260";
这就是问题:
现在这对普通程序员来说似乎没有什么问题。
但是我想要做的是得到它,以便返回的值是我正在寻找的真实00090000070EC258
结果——不是——00090000070EC260
而且我不知道是什么导致了这种值的差异。
我能想到的唯一可能导致这种值差异的假设与将 类型转换double
为 an有关unsigned long
,并且在值被转换的过程中,具有精度的double
东西会搞砸事情。
因此,如果有人可能知道出了什么问题或对可能出了什么问题有任何想法,请做出回应。我感谢可以提供的任何帮助。谢谢。:)