1

我正在开发一个 VB.net 08 项目并且代码有一个奇怪的问题。

SyncItemValues(i) = Convert.ToDouble(werte(i-1))

并且werte(i)是一个字符串列表。

SyncItemValues(i) As Object

werte(i)填充了从 MySql 数据库导入的整数和实数值。实际值为例如 4.6 ;5.7;...所以小数分隔符是“。”

问题是转换函数解释“。” 作为组分隔符。所以它将 4.5 转换为 45 这是错误的。

如果我使用“,”作为小数分隔符或将文化从 DE 更改为 US,则结果是正确的。

奇怪的是,到目前为止,该项目一直在进行这种转换,而这些问题以前从未发生过。对项目进行了几处更改,但从未触及过转换。一个 dll 已更改,我现在问自己的问题是这种交换是否会导致奇怪的行为。

我完全不知道出了什么问题。有任何想法吗?

4

1 回答 1

2

werte(i) 填充了从 MySql 数据库导入的整数和实数值。

然后不要将它们作为字符串获取。假设它们确实以数值形式存储在数据库中,请避免所有字符串转换——它们只会造成麻烦。

Convert.ToDouble(String)使用当前的线程文化。如果您确定这是适当的值,您可以Double.Parse使用 ,作为格式提供程序解析该值 - 但同样,最好避免从字符串转换开始。CultureInfo.InvariantCulture

于 2013-02-18T12:36:52.237 回答