C++浮点存储

dls*_*sou 1 c++ floating-point

可能重复:
处理浮点数中的精度问题

码:

float flt = 78983636;  // stores 78983632. as seen in debugger
flt = 79282056;        // stores 79282056.
Run Code Online (Sandbox Code Playgroud)

为什么它不能准确存储第一个值,但能够为更大的第二个值?

unw*_*ind 6

典型的32位浮点数具有大约24位的整数精度.你可以精确地存储你的价值,即使它更大也只是因为它击中了一个看起来像一个整数的最佳点,而另一个却没有.

具体而言,编号79282056存储为1.1813947*2 26或79282056.2526208.所以它不准确,你省略了小数点后面的一些数字.

您可以使用此转换器检查用于存储任何浮点数的尾数,符号和指数.