Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Sometimes it just goes crazy
#1
I was having trouble with a variable not being where I expected. In the end, I have this code:
Code:
FUNCTION SINE(num as FIXED) as FIXED

{skipped some code]

PRINT at 0,0;((num*32)/90)
PRINT INT ((num*32)/90)

So num is a fixed, and the skipped code makes it 0<=num<=90

The routine prints out for those two:
0.35554504......
23301

Now, I'm thinking that INT(0.35) is 0. The compiler landed about 23,000 too high on that one.

Any idea why?
Reply
#2
britlion Wrote:I was having trouble with a variable not being where I expected. In the end, I have this code:
Code:
FUNCTION SINE(num as FIXED) as FIXED

{skipped some code]

PRINT at 0,0;((num*32)/90)
PRINT INT ((num*32)/90)

So num is a fixed, and the skipped code makes it 0<=num<=90

The routine prints out for those two:
0.35554504......
23301

Now, I'm thinking that INT(0.35) is 0. The compiler landed about 23,000 too high on that one.

Any idea why?

It seems to be an overflow due to the bug of the INT(<fixed value>), which is now fixed. Read the INT bug thread and download the latest version, and compile this code with it, to test if it is solved or not.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)