【问题标题】:'\' operator does not support floats?'\' 运算符不支持浮点数?
【发布时间】:2010-01-19 11:28:01
【问题描述】:
Dim x As Integer = 1.8 \ 1 

错误:

Option Strict On 不允许隐式 从“双”到“长”的转换

什么??

编辑:

显然,Visual Basic 试图将任何浮点数值表达式转换为 Long。好的,这部分很清楚了。

现在,我可以使用了

CType((Math.Round(myResultingSingle)), Integer)

但是对于MSDN tells\ 运算符支持所有类型,如果实际上它只支持 Long 作为 expression1 呢?!...

【问题讨论】:

  • 您的预期结果是什么?另请注意,转换通常会使用银行四舍五入(如果 Option Strict 关闭)。
  • @divo: x 应该是 2... 或 1.. 最后,我想消除错误,然后查看(默认)结果。

标签: vb.net operators


【解决方案1】:

整数除法运算符需要整数操作数。两种可能的方法:

  • Dim x As Integer = CInt(1.8) \ 2
  • Dim x As Integer = CInt(1.8 / 2)

【讨论】:

  • 所以,\只支持整数操作数,而不是全部(包括浮点数),如何伪装MSDN。
  • @serhio:正如 Grzegorz Gierlik 指出的那样,您只能在 Option Strict Off 的情况下使用浮点数。在 MSDN 上有明确说明。
【解决方案2】:

来自the MSDN page \ Operator (Visual Basic)

在执行除法之前,Visual Basic 会尝试将任何浮点数值表达式转换为 Long

那个 。因为 DoubleLong 是一个缩小转换,并且Option Strict 已开启,所以您必须明确要求它发生。

【讨论】:

  • 来自同一 MSDN 页面:Supported Types: All numeric types, including the unsigned and floating-point types and Decimal. 实际上,仅支持 Long 作为 expression1.. :(
  • @serhio:难道你正在寻找 / 运算符而不是?
  • @divo:如您所见,x 是一个整数,所以我需要一个整数除法。 x = 1 或 2...mdeas...
【解决方案3】:

Here(在备注部分)是答案:

在执行除法之前,Visual 基本尝试转换任何 浮点数值表达式 长。如果 Option Strict 为 On,则 发生编译器错误。

【讨论】:

  • Visual Basic 尝试将任何浮点数值表达式转换为 Long... 那我该怎么办? MSDN 还告诉所有类型都支持,但实际上只有Long?!。
  • 您必须将双精度类型转换为整数类型。见@nobugz 答案:stackoverflow.com/questions/2093067/…
猜你喜欢
  • 2023-03-26
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-08
  • 2020-08-11
  • 1970-01-01
相关资源
最近更新 更多