Moein Hosseini
Moein Hosseini

Reputation: 4383

0 multiply number in floating point

as you know single number will save in memory by following format: (-1)^s * 1.f * 2^e: and zero will save like that: 1.0000000000000000 * 2 ^ -126

now If I multiply it to another floating point number like 3.37 (-1) ^ 0 * 1.10101111 * 2 ^ 128 it will not 0 it reality,but in computer it will be 0 ,how and why?

Upvotes: 2

Views: 1132

Answers (5)

xanatos
xanatos

Reputation: 111860

I'll say that the math unit of the cpu has some optimization for the "special" floating point numbers, like NaN, Infinity and 0 (and note that technically in IEEE binary fp there are two 0, a positive and a negative one) and know what to do in the three cases.

If you are interested, here http://steve.hollasch.net/cgindex/coding/ieeefloat.html there is one table that shows what happens when you sum/multiply the "special" numbers between themselves.

Upvotes: 2

STT LCU
STT LCU

Reputation: 4330

why: floating-point numbers set isn't continuous like R set in Math. Therefore some nubers can't be visualized correctly and rounded to the neares possible visualizable number

how: it's being rounded :)

Upvotes: 0

MartinStettner
MartinStettner

Reputation: 29164

As pointed out here (Wikipedia, sorry ...), there are special values for the exponent which are treated differently. If the exponent is zero, the formula for calculating the value of the number is

(-1)^s * 0.f * 2^(-126)   # notice 0.f instead of 1.f for other exponents

So, a floating point zero has simply all bits set to zero (i.e. f=0, s=0, e=0). The multiplication algorithms of course have to take care of this "special" exponent and set the result to zero in this case (more specifically to +Zero or -Zero accordingly ...)

Upvotes: 3

Ed Heal
Ed Heal

Reputation: 60007

Rounding errors. Computers are finite

Upvotes: -2

James Kanze
James Kanze

Reputation: 153919

Zero is (typically) a special case in floating point representations, and in IEEE floating point, zero is represented as 0.0 * 2 ^ -126 (or whatever the exponent is—it really doesn't matter).

Upvotes: 2

Related Questions