- #1

- 310

- 0

- Thread starter SherlockOhms
- Start date

- #1

- 310

- 0

- #2

berkeman

Mentor

- 59,065

- 9,163

It's a way to represent a wider range of numbers -- basically including exponents in the representation:

http://en.wikipedia.org/wiki/Floating_point

- #3

- 29

- 3

Sincerely,

Gary

- #4

- 310

- 0

- #5

jtbell

Mentor

- 15,735

- 3,892

Don't you have a textbook or other recommended reference source?

- #6

- 310

- 0

- #7

- 16,740

- 7,428

Surely you DO know what kind of class you are in, no? Is it a computer science class, a physics class, a math class, what???

- #8

- 310

- 0

Of course. Never said I didn't. It's a computer programming class with numerical methods involved.

- #9

- 16,740

- 7,428

Then read post #3Of course. Never said I didn't. It's a computer programming class with numerical methods involved.

- #10

harborsparrow

Gold Member

- 610

- 154

A key thing to remember about floating point numbers, as used in computers, is that they are stored as approximations, unlike integers which can be represented exactly. Thus, one must never test two numbers of type float for equality (as in does "x = y", where both are floating point numbers), because even if they are so closely approximated that both print out as having a value of, say 1.3, the equality test might still fail.

Sincerely,

Gary

Further, because of how they are stored, it is possible to have issues with overflow and loss of precision when doing calculations with them (depending on the order in which computations are done to the numbers, for example). To learn about these things, read a book on numerical computing (or wait until your professor covers them).

Handling floating point numbers correctly in programming is an important topic, and may take some time to learn.

- #11

Mark44

Mentor

- 34,687

- 6,394

Most floating point numbers are stored as approximations, but some are stored exactly, such as 1.5, 3.75, and -4.875. Any number whose fractional part is made up of a finite sum of powers of 1/2 (within limits based on the size of the mantissa) is stored exactly.A key thing to remember about floating point numbers, as used in computers, is that they are stored as approximations, unlike integers which can be represented exactly.

Thus, one must never test two numbers of type float for equality (as in does "x = y", where both are floating point numbers), because even if they are so closely approximated that both print out as having a value of, say 1.3, the equality test might still fail.

Further, because of how they are stored, it is possible to have issues with overflow and loss of precision when doing calculations with them (depending on the order in which computations are done to the numbers, for example). To learn about these things, read a book on numerical computing (or wait until your professor covers them).

Handling floating point numbers correctly in programming is an important topic, and may take some time to learn.

- #12

berkeman

Mentor

- 59,065

- 9,163

And remember in C at least, the check four equality would be "x == y", since == is a comparison and = is an assignment. Too easy to get those mixed up...Thus, one must never test two numbers of type float for equality (as in does"x = y", where both are floating point numbers), because even if they are so closely approximated that both print out as having a value of, say 1.3, the equality test might still fail.

- #13

- 310

- 0

Thanks for all the info, guys.

- #14

harborsparrow

Gold Member

- 610

- 154

I, for one, am not a guy. But I'll take the thank you generically.

- #15

- 310

- 0

'Twas meant generically.

- #16

- 310

- 0

- #17

kreil

Gold Member

- 668

- 67

Floating point numbers are defined on a grid. In other words, they have finite precision, and if a calculation falls between two floating point numbers, there will be roundoff error. Since the smallest distance between two floats is machine epsilon, the maximum value of the roundoff error (in matlab) is eps/2, or about 1.1102e-16 in double precision. Here is an example in matlab:

As mentioned in a previous post, this is why you don't compare them directly for equality, but rather to a tolerance.

Code:

```
>> A = 0.3 + 0.3 + 0.3
A =
0.9000
>> abs(A - 0.9) == eps/2
ans =
1
```

Last edited:

- #18

- 310

- 0

Thanks for that! However, it's not so much the concept of the round off error that I'm struggling with, moreso it's calculations associated with it. I've actually posted the specific problem that I've struggled with in the homework and course work section and it'd be great if you could have a look as it'd probably give you a better understanding of what I'm struggling with. It's a worked example to do with finding the floating point representation of 0.2 and then the error between the two values.Floating point numbers are defined on a grid. In other words, they have finite precision, and if a calculation falls between two floating point numbers, there will be roundoff error. Since the smallest distance between two floats is machine epsilon, the maximum value of the roundoff error (in matlab) is eps/2, or about 1.1102e-16 in double precision. Here is an example in matlab:

As mentioned in a previous post, this is why you don't compare them directly for equality, but rather to a tolerance.Code:`>> A = 0.3 + 0.3 + 0.3 A = 0.9000 >> abs(A - 0.9) == eps/2 ans = 1`

- #19

- 310

- 0

- Last Post

- Replies
- 8

- Views
- 932

- Replies
- 1

- Views
- 2K

- Replies
- 7

- Views
- 1K

- Last Post

- Replies
- 8

- Views
- 3K

- Last Post

- Replies
- 42

- Views
- 425

- Replies
- 2

- Views
- 1K

- Last Post

- Replies
- 5

- Views
- 11K

- Last Post

- Replies
- 8

- Views
- 4K

- Replies
- 6

- Views
- 838

- Last Post

- Replies
- 5

- Views
- 874