Это двойное, разновидность довольно большого числа с плавающей запятой. Поплавки известны своей неточностью. точное совпадение , например number == 0
, происходит один раз в синюю луну. Даже после установки значения не гарантируется, что будет точно этим значением. Это неотъемлемое и неизбежное свойство типов с плавающей запятой: https://www.youtube.com/watch?v=PZRI1IfStY0
Либо ожидайте этого с этого момента и используйте проверки <=, либо полностью прекратите использование float. Какой-нибудь простой код вроде этого: </p>
if(number <= 0)
number = 0;
гарантирует, что если он когда-либо упадет ниже 0, он вернется к 0. После этой строки точное совпадение, например number == 0
, будет несколько надежным. Но я советую вообще прекратить использовать поплавок. Целое число, в котором последние 3 цифры отображаются как «десятичная точка», здесь работает лучше.