Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Javorov1103 avatar Javorov1103 12 Точки

https://pastebin.com/x1KmhyiD

-1
Curious avatar Curious 33 Точки

Би могъл да използваш функции като floor или ceiling и да провериш дали резултата е същият като оригиналното число.

Това би работило за повечето констатни float-ове, има проблем когато float-а, който проверяваш е резултат от някаква сметка

и се получи някакво разкръгление поради липса на точност. На пример,

float z = powf(powf(3.0f, 0.05f), 20.0f);

би трябвало да върне 3, (3 на степен 1/20, цялото повдигнато на 20-та степен), но резултатът поне на С е  2.9999992847442626953125, и ако изберем да го разкръглим към нулата, това би върнало 2. За да се справиш с този проблем, би могъл да определиш някаква константа, която представлява един вид "толеранс".

const float EPSILON = 0.00001;
float z = powf(powf(3.0f, 0.05f), 20.0f);

if(abs(z - 3) < EPSILON) {
    print("integer");
} else {
    print("not integer");
}

Тъй като не си предоставил контекстът, в който ще ползваш кода, не знам дали това би работило в твоят случай.

Аз се водех от https://stackoverflow.com/questions/5796983/checking-if-float-is-an-integer тази тема в stack overflow, също бих ти препоръчал да прегледаш страницата в уикипедия

https://en.wikipedia.org/wiki/Floating-point_arithmetic

П.С.: снипетът не е валиден С код.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.