Вы должны знать, как данные хранятся в памяти, сначала посмотрим на целых например, int
, short
, unsigned long long
, они хранятся в памяти, и каждая конфигурация разных бит означает различный номер, поэтому его штраф, такая же ситуация с номерами float
, разные конфигурации бит означают разное количество, поэтому давайте рассмотрим ограничения типов. Сравните int
и float
, оба из них представляют собой 32-разрядные номера. int
предела –2147483648 to 2147483647
4294967296 разных значений, так как о float
#define FLT_MAX 3.402823466e+38F /* max value */
#define FLT_MIN 1.175494351e-38F /* min positive value */
Итак, как вы видите, диапазон гораздо шире, но количество различных значений одинаково, так что вы не можете иметь такую хорошую точность, а также вы можете прочитать больше о float
стандарт IEEE754 here или here
Поиск «плавающего (или двойного) формата» и «поплавка (или двойная) потеря прецессии». Вы также можете использовать формат «decimal». – SJuan76
Из-за точности с плавающей точкой (ограниченная). Прочитайте [это] (https://ece.uwaterloo.ca/~dwharder/NumericalAnalysis/02Numerics/Double/paper.pdf) – memo1288
Спасибо за ваши ответы! –