Jump to content
  • Advertisement
Sign in to follow this  
Conoktra

Convert floating point operation to integer

This topic is 2343 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hello,

I have a forumlae, "((a / b) * (max - min)) + min", that needs to be converted to integer math rather than floating point. max and min are unsigned integers, and (a / b) results in a float (b is always greater than a, so a/b always ranges from 0.0 to 1.0).

How would I go about calculating the same result without using floating point math? I am sure the solution is simple, but I am at a total loss for how to do this.

Thanks :).

Share this post


Link to post
Share on other sites
Advertisement
In integer math dealing with fractions of one, it is always best to do the multiplication first, then followed by the division, i.e. a * (max - min) / b + min. Also, depending on the logicyou are after, be wary of one-off errors that can occur, i.e. evaluate whether you would instead like to have a * (max - min + 1) / b + min.

Share this post


Link to post
Share on other sites

In integer math dealing with fractions of one, it is always best to do the multiplication first, then followed by the division, i.e. a * (max - min) / b + min. Also, depending on the logicyou are after, be wary of one-off errors that can occur, i.e. evaluate whether you would instead like to have a * (max - min + 1) / b + min.


if you multiply min at the end with b and then divide the whole equation you will end up with all products and addition operators being done in integer math, and the division by b will then give you the resulting float value.
You should see this as a maths equation nd then just apply the normal rules for addition and division, b*min/b = min. With that last addition you will postpone the eventual move into a float untill the very end and should still give you the same result.

Resulting equation:
(a * (max - min) + min * b) / b

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!