我正在Excel 2002中编写一个VBA宏来处理来自设备的日期,该设备在4个通道中的每一个上提供10个值.
当我尝试将整数除以另一个整数来计算行和列时,结果表明它正在使用银行家舍入,就好像它是一个浮点变量.
Sub TestRounding()
Dim Y As Integer
Dim Field As Integer
Dim Channel As Integer
ActiveWorkbook.Sheets.Add
ActiveWorkbook.ActiveSheet.Cells.Select
range("A1").Select
For Field = 1 To 40
Channel = (Field - 1) / 10
Y = Field - 1
ActiveSheet.range("A1").Offset(Y, Channel).Value = Field
Next Field
End Sub
Run Code Online (Sandbox Code Playgroud)
Y是输出的行,我通常设置它
Y = (Field -1) mod 10
Run Code Online (Sandbox Code Playgroud)
但是我把它留了下来
Y = Field - 1
Run Code Online (Sandbox Code Playgroud)
在结果工作表中更清楚地说明这一点.
通道应该是输出的列.
当我运行这个宏时,值1-6被放入A列,然后7-15被放入B列,16-26被放入C列,然后是D列27-35,E列36-40 .
我的预期是1-10值进入A列,11-20进入B列,21-30进入C列,31-40进入D列.
我习惯于C和C++,如果我将整数除以另一个整数,则使用整数数学计算结果.VBA有什么不同?
我正在使用 C++ Builder XE 并想检查浮点值是否有效。根据帮助,在math.h中,有一个调用
bool IsNan(float value)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试编译它时,它告诉我
Call to undefined function 'IsNan'
Run Code Online (Sandbox Code Playgroud)
查看 math.h,没有 isnan 这样的东西(我使用了不区分大小写的搜索)
我是在做傻事还是什么?