【发布时间】:2016-05-16 13:20:00
【问题描述】:
我有远程数据,我必须显示两个项目的总成本。 这是我创建的一个示例,用于解决如何进行转换以添加这两个项目:
Dim test1 As String = "ZAR897.83"
Dim test2 As String = "ZAR900.83"
Dim t1 As Double = Val(test1)
Dim t2 As Double = Val(test2)
Dim TotalPrice As Decimal = 0.00
TotalPrice += CDec(t1)
TotalPrice += CDec(t2)
在上面的代码中 t1 结果值为 0.0 和 t2 相同。
任何添加这些值的帮助将不胜感激。
编辑:此问题已在此处提出但未得到解答:Convert currency to decimal in VB.NET
编辑:我没有展示我尝试过的所有不同的铸件,因为我尝试的所有铸件都产生了构建错误(我认为展示它们毫无意义,因为它们在某种意义上更不正确)。无论我如何尝试转换数字,我都会出错的原因是我的 Visual Studio 期望一个逗号而不是十进制值的句点,这是由于 Windows 中的区域设置设置不正确。
【问题讨论】:
-
试试
Decimal.Parse(t1, NumberStyles.Currency)。 -
@VisualVincent "重载解析失败,因为无法使用这些参数调用可访问的 'Parse':" 它从那里继续,并带有额外的文本。
-
如果“ZAR”应该是南非兰特,那么不,你不会从 Val() 或 Decimal.Parse() 中得到它。 .NET 将只接受“897.83R”。您可以先从字符串中删除 ZAR。
-
这种行为不应该让人感到意外。如果您阅读文档 (msdn.microsoft.com/en-us/library/k7beh1x9(v=vs.90).aspx),它会明确指出“Val 函数在它无法识别为数字的一部分的第一个字符处停止读取字符串”
-
这不是我的投票。我可以通过投票轻松证明这一点。在这里。