What is the relationship between digits of significance and precision loss in floating point numbers?

◇◆丶佛笑我妖孽 提交于 2019-12-13 13:10:01

问题


So I have been trying to wrap by head around the relation between the number of significant digits in a floating point number and the relative loss of precision, but I just can't seem to make sense of it. I was reading an article earlier that said to do the following:

  1. Set a float to a value of 2147483647. You will see that its value is actually 2147483648
  2. Subtract 64 from the float and you will see that the operation is correct
  3. Subtract 65 from the float and you will see that you actually now have 2147483520, meaning that it actually subtracted 128.

So why is this 128 when there are 10 significant digits? I understand how floats are stored (1 bit for sign, 8 bits for exponent, 23 bits for mantissa) and understand how you will lose precision if you assume that all integers will automatically find exact homes in a float data structure, but I don't understand where the 128 comes from. My intuition tells me that I'm on the right track, but I'm hoping that someone may be able to clear this up for me.

I initially thought that the distance between possible floats was 2 ^ (n-1) where n was the number of significant digits, but this did not hold true.

Thank you!


回答1:


The "distance" between two adjacent floating point numbers is 2^(1-n+e), where e is the true exponent and n the number of bits in the mantissa (AKA significand). The exponent stored is not the true exponent, it has a bias. For IEEE-754 floats, this is 127 (for normalized numbers). So, as Peter O said, the distance depends on the exponent.




回答2:


The distance between two floating point numbers depends on the exponent. The smaller the exponent, the smaller the difference between one floating point number and the next. The next thing to consider is that the exponent stored in floating point numbers is a binary exponent, not a decimal exponent, so in the case of floating point numbers, decimal precision is less important than binary precision of the number. Figure 9.1 of this document explains the concept pretty well.



来源:https://stackoverflow.com/questions/7005850/what-is-the-relationship-between-digits-of-significance-and-precision-loss-in-fl

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!