VB.NET - 将字符串转换为double和back

时间:2012-02-24 06:41:39

标签: vb.net double type-conversion

我正在存储一个值(最初表示为字符串) - 12345678901234.12345678912 - 在一个双变量中。存储后,它以指数格式表示(带有e)。如何将此指数表示转换为原始(字符串)表示?

Dim s as string = "1234567891234567.123456789"
Dim d as Double
Double.TryParse(s, d)
Console.WriteLine(d) 'Prints 1.23456789123457E+15

使用Decimal解决问题,但为什么不能双重做?

1 个答案:

答案 0 :(得分:2)

您的字符串包含25位有效数字。 double根本不保留这么多信息。即使decimal也几乎不能保持那么多(28/29位数)。来自System.Double的文档:

  

默认情况下,Double值包含15个十进制数字的精度,但内部最多保留17位数。

您应该在binary floating pointdecimal floating point上阅读我的文章以获取更多信息 - 它们从C#的角度来看主题,但您显然使用的是VB中的相同类型。

在您的特定情况下,最接近1234567891234567.123456789的完全 double值仅为1234567891234567 - 您将丢失所有小数点后的信息。< / p>