Возможный дубликат:
Почему не могут ли десятичные числа быть точно представлены в двоичном формате?
Я разрабатываю довольно простой алгоритм использования математики на C ++.
И у меня есть переменная с плавающей запятой с именем «step», каждый раз, когда я заканчиваю цикл while, мне нужно, чтобы step делился на 10.
Итак, мой код примерно такой,
float step = 1;
while ( ... ){
//the codes
step /= 10;
}
По моей глупой простой логике это хорошо кончается. Шаг будет делиться на 10, от 1 до 0,1, от 0,1 до 0,01.
Но этого не произошло, вместо этого появляется что-то вроде 0,100000000001. И я был похож на "Что за черт!"
Может кто-нибудь помочь мне с этим. Возможно, я не совсем понимаю сам тип данных. Так что, если кто-то сможет объяснить дальше, это будет оценено.