Попытка найти наименьшее положительное число для float, double, long double. Работает для двойных и длинных двойных знач ⇐ C++
Попытка найти наименьшее положительное число для float, double, long double. Работает для двойных и длинных двойных знач
Я пытаюсь найти наибольшее и наименьшее число для каждого типа данных (float, double и long double). Я использую цикл while и сравниваю каждое значение с бесконечностью (для самого большого числа) и 0 (для наименьшего). Затем он печатает найденные значения. Он дает мне правильные значения для double и long double, а также самое большое число типа float.
Однако для наименьшего числа с плавающей запятой он печатает 0. Когда я изменяю программу, чтобы она отображала каждое значение в цикле, правильное значение - предпоследнее, но после этого по какой-то причине цикл повторяется еще раз, говорит, что 0 > 0 и печатает 0 как наименьшее значение.
Я не понимаю, почему это происходит? Даже если последнее значение было настолько маленьким, что округлялось до 0, почему тогда он решает, что 0 > 0, и позволяет циклу повториться в последний раз?
Вот программа:
#include #include использование пространства имен std; интервал основной() { плавающий big_f = 1, small_f = 1; двойной big_d = 1, small_d = 1; длинный двойной big_ld = 1, small_ld = 1; while(!(isinf(big_f*2))) { большой_ф *= 2; } while((small_f*0.5)>0 и !((small_f*0.5)==0)) { small_f *= 0,5; } cout
Я пытаюсь найти наибольшее и наименьшее число для каждого типа данных (float, double и long double). Я использую цикл while и сравниваю каждое значение с бесконечностью (для самого большого числа) и 0 (для наименьшего). Затем он печатает найденные значения. Он дает мне правильные значения для double и long double, а также самое большое число типа float.
Однако для наименьшего числа с плавающей запятой он печатает 0. Когда я изменяю программу, чтобы она отображала каждое значение в цикле, правильное значение - предпоследнее, но после этого по какой-то причине цикл повторяется еще раз, говорит, что 0 > 0 и печатает 0 как наименьшее значение.
Я не понимаю, почему это происходит? Даже если последнее значение было настолько маленьким, что округлялось до 0, почему тогда он решает, что 0 > 0, и позволяет циклу повториться в последний раз?
Вот программа:
#include #include использование пространства имен std; интервал основной() { плавающий big_f = 1, small_f = 1; двойной big_d = 1, small_d = 1; длинный двойной big_ld = 1, small_ld = 1; while(!(isinf(big_f*2))) { большой_ф *= 2; } while((small_f*0.5)>0 и !((small_f*0.5)==0)) { small_f *= 0,5; } cout
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение