Существует много вопросов и ответов о десятичном & целочисленном извлечении из чисел с плавающей запятой и выводе результатов для некоторых определенных десятичных точек. Но никто не смог решить мою проблему. Пожалуйста, если кто-нибудь может помочь мне решить мою проблему.Как получить точную дробную часть из числа с плавающей запятой в виде целого числа?
Я действительно пытался извлечь точную дробную часть из числа с плавающей запятой. Я пробовал с этим:
float f=254.73;
int integer = (int)f;
float fractional = f-integer;
printf ("The fractional part is: %f", fractional);
Но выход: 0.729996. По этой причине, когда я это делал:
float f=254.73;
int integer = (int)f;
float fractional = f-integer;
int fractional_part_in_integer = ((int)(f*100)%100);
printf ("The value is: %d", fractional_part_in_integer);
Это дает мне 72 в качестве выхода. Но я хочу извлечь точно 73 из заданного числа 254.73. Я уже знаю, как использовать %.2f
во время функции printf()
для печати до двух десятичных чисел. Но в моем коде я не хочу печатать номер прямо сейчас. У меня есть некоторые вычисления с этой дробной частью как целочисленная форма, т. Е. 73. Итак, моя проблема заключается в том, как я мог извлечь дробную часть из 254.73, чтобы я мог получить точную сумму 73 как целое, чтобы делать больше вычислений?
Надеюсь, я мог бы понять это всем.
Номера плавающей запятой не могут быть представлены как значение _exact_, которое вы хотите, чтобы они были в значительной части времени. Ваши результаты разумны. Потенциально интересный эксперимент заключается в том, чтобы напечатать значение 'f', которое может быть только близко к тому, что вы думаете (хотя я не устал сам, поэтому не уверен). UPDATE: Я пробовал: http: // ideone.com/9fbeme – mah
Спасибо. Но, надеюсь, должен быть способ сделать некоторые другие вычисления с 73 там. UPDATE: Да, я уже сделал это и получил то значение, которое вы нашли в своем эксперименте. –
Поскольку ваше оборудование не может точно представлять 254,73, вам нужно либо найти другое оборудование, которое может, либо использовать вычисления на основе целых чисел (например, с '25473' и делить на 100 позже). – mah