将字符串转换为浮动时,转换器会产生错误的结果。
?Global.System.Convert.ToDouble("635705821821928755").ToString("0")
"635705821821929000"
?Global.System.Convert.ToSingle("635705821821928755").ToString("0")
"635705800000000000"
我正在ASP.Net网页上使用VB.Net Visual Studio 2012,Framework 4。
有没有解决方案将巨大的数字从字符串转换为浮动?
答案 0 :(得分:2)
结果没有错,它只有比你预期的更低的精度。浮点数的设计精度有限,而且您无法获得比其限制更精确的结果。
您可以使用Decimal
来获得更高的精确度。在这种情况下,您使用的数字就足够了:
?Convert.ToDecimal("635705821821928755").ToString("0")
"635705821821928755"
double
的精度为15-16位,Decimal
的精度为28-29位。
注意:严格来说,Decimal
不是浮点数,而是固定精度数。它是一个带小数的整数,所以例如12.345的数字存储为12345 * 10 -3
答案 1 :(得分:1)
您应该使用System.Numerics中的BigInteger结构。