Integer Division Broken?

  • Thread starter Thread starter Ben
  • Start date Start date
B

Ben

Hi, I have an interesting example from my debugger. I have 2 variables:
sourcewidthnet and targetwidthnet. Notice the results in the debugger.
I'm going to be forced to use the int function of the decimal.toint32
since the \ operator doesn't appear to work, or I greatly misunderstand
the documentation on the \ operator.

decimal.Remainder(sourcewidthnet, targetwidthnet) 0.375D
sourcewidthnet 96D
targetwidthnet 2.125D
SourceWidthNet / TargetWidthNet
45.176470588235294117647058824D(SourceWidthNet \ TargetWidthNet)
48 Long
decimal.ToInt32((SourceWidthNet / TargetWidthNet)) 45 Integer

I can't justify the: 96 \ 2.125 = 48 answer at all!

Thanks for your input.
 
It is correct. 96 \ 2 = 48. When you do an integer division, the divisor
is the integer part, which in this case is 2.
 
Ok, I finally see the documentation in the remarks section:

Remarks
Before division is performed, any floating-point numeric expressions
are coerced to Long if Option Strict is Off. If Option Strict is On, a
compiler error results

Silly me, thanks.

Still to get what I'm looking for the int() and decimal.tointxx
routines will work, thanks again.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top