Чтобы получить десятичную часть действительного числа в c++
, мы можем использовать функцию modf()
, содержащуюся в std
пространстве имен (std::modf()
) в библиотеке <cmath>
. Эта функция получит только десятичную часть действительного числа типа float
, double
или long double
. Чтобы получить абсолютное значение десятичной части, вам нужно использовать функцию fabs()
, содержащуюся в std
пространстве имен (std::fabs()
) в библиотеке <cmath>
. Вы можете объединить их так:
#include <cmath>
...
std::cout << "The absolute decimal part is: " << std::fabs(std::modf(realNumber, &entirePart));
Чтобы проверить, равна ли десятичная часть числа 0,5, вы можете использовать условный троичный оператор (?:
) и сохранить результат проверки в значении bool или в значении int.
На этой странице упоминается и объясняется условная троица
оператор (?:
) с примером:
Условный оператор вычисляет выражение, возвращая одно значение
если это выражение имеет значение true, а другое, если
выражение оценивается как ложное. Его синтаксис:
condition ? result1 : result2;
Если условие истинно, все выражение оценивается как result1, и
в противном случае результат2.
7==5 ? 4 : 3 // evaluates to 3, since 7 is not equal to 5.
7==5+2 ? 4 : 3 // evaluates to 4, since 7 is equal to 5+2. 5>3 ? a : b // evaluates to the value of a, since 5 is greater than 3.
a>b ? a : b // evaluates to whichever is greater, a or b.
7==5 ? 4 : 3 // evaluates to 3, since 7 is not equal to 5.
7==5+2 ? 4 : 3 // evaluates to 4, since 7 is equal to 5+2. 5>3 ? a : b // evaluates to the value of a, since 5 is greater than 3.
a>b ? a : b // evaluates to whichever is greater, a or b.
Вот коды, которые вы можете использовать для решения вашей проблемы:
Сохранить результат в переменной bool:
#include <cmath>
...
// Here you're declaring the real number variable.
float realNumber = -4.6f;
// In this variable will be stored the entire part of realNumber variable.
float entirePart = 0f;
// Then you create a bool that will be true if the decimal part is equal to 0.5.
bool check = ( std::fabs(std::modf(realNumber, &entirePart)) == 0.5) ? true : false ;
// result: check = false
Сохранить результат в переменной int:
#include <cmath>
...
// Here you're declaring the real number variable.
float realNumber = -4.6f;
// In this variable will be stored the entire part of realNumber variable.
float entirePart = 0f;
// Then you create a bool that will be true if the decimal part is equal to 0.5.
int check = ( std::fabs(std::modf(realNumber, &entirePart)) == 0.5) ? 1 : 0 ;
// result: check = 0
Более подробную информацию об операторах c++
можно получить по следующим ссылкам:
CPlusPlus: операторы.
Условный (или троичный) оператор (?:)
C ++ Условно? : Оператор