【问题标题】:VB.NET Simple Arithmetic operationVB.NET 简单算术运算
【发布时间】:2014-03-13 10:37:18
【问题描述】:

我有一个简单的算法要在 VB.Net 中执行,如下所示;

我有 String = "325" 类型的 m_Variable5,它是从另一个对象传递的。操作是;

m_Variable5 = Convert.ToString(Convert.ToInt32(m_Variable4, InvariantCulture) / 7, InvariantCulture)
m_Variable5 = Convert.ToString(Convert.ToInt32(m_Variable5, InvariantCulture) + 1, InvariantCulture)
m_Variable5 = Convert.ToString(Convert.ToInt32(m_Variable5, InvariantCulture) * 7, InvariantCulture)

在执行这 3 个操作时,我在第二个操作中遇到了类型错误。 错误消息说"Input string was not in a correct format."

但使用 VB 转换函数完成相同的操作时,可以正常工作;

 m_Variable5 = CStr(CInt(m_Variable4) / 7)
 m_Variable5 = CStr(CInt(m_Variable5) + 1)
 m_Variable5 = CStr(CInt(m_Variable5) * 7)

谁能解释为什么我不能使用第一个代码,它更适合 .Net 平台?

非常感谢

【问题讨论】:

  • 请展示一个简短但完整的程序来说明问题。它当然看起来应该可以工作......
  • 这就是困扰我的问题,它应该可以工作。只需添加Dim m_Variable5 as string = "325"并调试3行,你会看到。
  • 好吧,我可以做到这一点,在它周围添加足够的东西以使其成为一个完整的程序......其他人也可以回答这个问题。或者你可以做一次这项工作,这样任何人都可以复制、粘贴、编译、运行。 (只是一个控制台应用程序。)你应该不会花很长时间,但值得养成这个习惯 - 如果有人试图回答它可以在 秒 i>.

标签: .net vb.net arithmetic-expressions


【解决方案1】:

您出现异常的原因是在执行代码的第一行 m_Variable5 = "46.4285714285714" 后,无法使用第二行中的 Convert.ToInt32 函数将其转换为 Int32你的代码。

在第二个例子中它被转换了,因为你使用了CInt 操作符。 CInt(当传递一个字符串时)比 Convert.ToInt32 执行更多的工作。我个人更喜欢使用 CInt。

【讨论】:

  • 是的,问题本身已经过测试。我想知道为什么 Convert.ToInt32 抛出错误的明确原因!
  • 根据 MSDN ,当输入参数不包含可选符号后跟数字序列(0 到 9)时,Convert.ToInt32 会引发异常。 CInt 函数将参数四舍五入到最接近的偶数。例如 3.5 轮到 4。明确的原因是在 Convert.ToInt32 和 CInt 的实现中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-02
  • 1970-01-01
  • 1970-01-01
  • 2016-06-24
  • 1970-01-01
  • 2015-03-31
  • 1970-01-01
相关资源
最近更新 更多