Первой ситуациейLoop с плавающей точкой итерации
for (int i = 0 ; i <=2 ; i++)
{
cout << i << endl ;
}
выхода:
1
2
Второй ситуация
for (float i = 0 ; i <= 2 ; i+=.2)
{
cout << i << endl;
}
выходной
1
1.2
1.4
1.6
1.8
Вопрос заключается в том, почему во второй ситуации он не брал 2 даже я сказал (< =) и самое смешное, если я удалить = выход будет даже то же самое?
Сдерживает я должен использовать поплавок DataType и я хочу использовать < = Оператор
'2.0' не равно' 2'! – haccks
@haccks: 2.0/2.0f * is * равно 2, проблема 0.2f! = 0.2 (математически) и '0.2f + 0.2f + 0.2f + 0.2f + 0.2f! = 1'. @ H.Scrope: представление с плавающей точкой не совсем точно, поэтому после ваших добавлений вы получаете число, которое когда-либо было немного меньше 2. Вы могли бы сказать '<2.1', чтобы решить вашу проблему, так как накопленная ошибка будет быть намного меньше (около 15-й цифры). –
Фактически, 'float' является точным. Но вы можете использовать 'float' для' int' для сравнения. – YaleCheung