Я думаю, что вы неправильно понимаете поплавки.Я не имею в виду, что, к сожалению, большинство людей неправильно понимают числа с плавающей запятой.
Числа с плавающей запятой могут сами «масштабироваться».Возможность хранить огромные числа или крошечные числа в одном и том же типе данных.Это не значит, что они «бесконечно точны».Это просто означает, что у них есть экстремальный диапазон, который они могут охватить.Они, однако, платят цену за эту гибкость.У них есть ошибка округления из-за того, что они представляют собой двоичные аппроксимации десятичных чисел.
Если вы хотите узнать об этом больше, в Интернете есть много информации.Сначала это портит головы людей, но как только ты поймешь, ты станешь лучше, безопаснее и мудрее.
Итак, если вы хотите сохранить точное значение, не используйте тип данных с плавающей запятой.Вместо этого используйте тип данных с фиксированной запятой.
Если вы измените значение с FLOAT
на что-то вроде DECIMAL(9,4)
, вы не получите ошибок округления, связанных с числами с плавающей запятой.
Вы выигралино вы не сможете хранить 0.12345
, для этого вам нужно будет указать DECIMAL(9,5)
.Но вам всегда будет гарантировано, что любое число, которое вы можете сохранить в нем, будет сохранено точно, а не приблизительно.