我正在开发一个VB.net 08项目,但代码有一个奇怪的问题。
SyncItemValues(i) = Convert.ToDouble(werte(i-1))
werte(i)
是一个字符串列表。
SyncItemValues(i) As Object
werte(i)
填充了从MySql数据库导入的整数和实数值。
真实的价值是例如4.6; 5.7; ...
所以decimalseperator是一个“。”
问题是convert-function解释“。”作为一个群体分离者。 所以它将4.5转换为45,这是错误的。
如果我使用“,”作为decimalpeperator或将文化从DE更改为US,结果是正确的。
奇怪的是,到目前为止,该项目已经采用了这种转换方式,而且这些问题以前从未发生过。 对项目进行了一些更改,但转换从未被触及过。 一个dll已被改变,我现在问自己的问题是,如果这种交换导致了奇怪的行为。
我完全不知道出了什么问题。有什么想法吗?
答案 0 :(得分:2)
werte(i)填充了从MySql数据库导入的整数和实数值。
然后不要把它们作为字符串来开始。假设它们确实存储为数据库中的数值,请避免所有字符串转换 - 它们只会造成麻烦。
Convert.ToDouble(String)
使用当前的线程文化。您可以使用Double.Parse
解析值,如果您确定这是适当的值,则使用CultureInfo.InvariantCulture
作为格式提供者 - 但同样,它最好避免转换为字符串以及从字符串开始。