Vb.net 小数位数

Vb.net 小数位数,vb.net,decimal,Vb.net,Decimal,我可能有个简单的问题 我想把字符串转换成十进制 我的字符串如下所示:95,34 在我将其转换为十进制后,其9534D 它丢失了小数点 为什么??我怎样才能保存它们 Dim decbla As String = hfBauvorhaben_Beleihungsauslauf.Value eBeleihungsauslauf = Convert.ToDecimal(decbla) 我把它写进数据库,然后我需要用小数位返回。这可能与文化有关,你能试着使

我可能有个简单的问题

我想把字符串转换成十进制

我的字符串如下所示:95,34

在我将其转换为十进制后,其9534D

它丢失了小数点

为什么??我怎样才能保存它们

            Dim decbla As String = hfBauvorhaben_Beleihungsauslauf.Value
            eBeleihungsauslauf = Convert.ToDecimal(decbla)

我把它写进数据库,然后我需要用小数位返回。

这可能与文化有关,你能试着使用吗

更改:

eBeleihungsauslauf = Convert.ToDecimal(decbla)
用于:

或:


此外,为了测试字符串是否可以转换为有效的小数,可以使用:
decimal.TryParse

从字符串中读取小数时,文化或区域特征很重要,因为不同的区域使用不同的小数或千位分隔符。因此,在您的情况下,逗号不会被解释为十进制分隔符,因此不受尊重

当前区域性是在属性中的线程上设置的。此属性在请求开始时(对于web应用程序)或启动应用程序时初始化。您可能希望检查调试器中的值,以确定使用的是哪个设置

如果在解析字符串时未指定特定区域性,则使用线程的设置

根据变量的名称和字符串的格式,我假设您需要使用德语区域设置来解析字符串。此外,您还可以使用来指定FormatProvider(您还可以为Convert.ToDecimal指定FormatProvider):

如果您希望处理由于格式而导致的解析问题而不出现异常,还可以查看返回布尔值的方法,该布尔值表示解析是否成功


与每次需要解析值时都必须指定区域性不同,您可能需要检查是否可以将应用程序设置为使用正确的区域性设置。这取决于应用程序的类型(Windows、Web)以及如何详细执行此操作。它通常涉及在某个时间点将Thread.CurrentCulture(很可能是CurrentUICulture)设置为所需的设置。

您是否可以尝试:
eBeleihungsauslauf=Convert.ToDecimal(decbla,CultureInfo.InvariantCulture)
?最有可能的情况是,您的区域设置对小数使用点
,而不是逗号
,它用于千位分隔符。您的字符串真的看起来像
“95,34”
,还是仅在调试器中?什么类型是hfBauvorhaben_Beleihungsauslauf.Value
?您是否已将
选项STRICT
设置为
关闭
eBeleihungsauslauf = Convert.ToDecimal(decbla, CultureInfo.InvariantCulture)
eBeleihungsauslauf = Decimal.Parse(decbla, CultureInfo.InvariantCulture)
Dim cult As New System.Globalization.Culture("de-DE")
Dim decbla As String = hfBauvorhaben_Beleihungsauslauf.Value
eBeleihungsauslauf = Decimal.Parse(decbla, cult)