Как указано в заголовке, я хотел бы начать с 1 и уменьшить на 0,01 до нуля.
Проблема в том, что я использую числа с плавающей запятой и продолжаю получать такие значения, как 0.5000000001
.
Как указано в заголовке, я хотел бы начать с 1 и уменьшить на 0,01 до нуля.
Проблема в том, что я использую числа с плавающей запятой и продолжаю получать такие значения, как 0.5000000001
.
Просто используйте int, начните с 100, уменьшите до 0 и разделите значение на 100.0
for (int i=100; i>=0; --i)
{
float f = i/100.0f;
...
}
i
, понижающийся с 100.0f
до 0.0f
. Кроме того, обратите внимание, что float f = i/100.0;
рискует заставить компилятор генерировать деление с двойной точностью с последующим преобразованием в одинарную точность. Объявление float f = i/100.0f;
эквивалентно (по сложным причинам, которыми компилятор может не знать, как воспользоваться) и более простым для компиляции.
- person Pascal Cuoq; 08.05.2014
float
не подходит для вашей задачи. - person Codor   schedule 08.05.2014int
начинается с25
и требуется уменьшить на2.5
до0
. Это невозможно, потому что ваше значение декремента не представляется возможным, и когда вы приближаете его (чем-то, что можно представить), оно не делит ваше значение идеально. - person Mankarse   schedule 08.05.2014