Как разделить float на целое число и дробную часть?
Я готов к точным операциям, и для этой цели мне нужен способ разделите число float на целое число и дробную часть. Есть ли способ для этого?
3 ответов
есть функция, включенная в math.h
библиотека modf
С помощью этой функции вы можете делать только то, что ты пытаешься.
пример:
#include <stdio.h>
#include <math.h>
double ftof ()
{
double floating = 3.40, fractional, integer;
fractional = modf(floating, &integer);
printf ("Floating: %g\nInteger: %g\nFractional: %g", floating, integer, fractional); // when using printf, there are no floats
return fractional;
}
выход:
Floating: 3.40
Integer: 3
Fractional: 0.40
обратите внимание, что с помощью double
в большинстве случаев лучше, чем при использовании float
, несмотря на то, что double
потребляет вдвое больше памяти float
(4:8 байт), следовательно, увеличение дальности и точности. Также в случае, если вам нужно больше точный выход из
большие плавающие числа при печати, вы можете попробовать printf()
спецификатор формата экспоненты %e
вместо %g
, который использует только
кратчайшее представление плавающей десятичной дроби.
мне пришла в голову мысль разделить их с некоторой логикой:
#include <iostream>
using namespace std;
int main()
{
double fr,i,in,num=12.7;
for(i=0;i<num;i++)
{
fr=num-i;
}
cout<<"num: "<<num;
cout<<"\nfraction: "<<fr;
in=num-fr;
cout<<"\nInteger: "<<in;
}
надеюсь, что это было то, что вы искали:) .
еще один способ использования типа cast.
#include <stdio.h>
#include <math.h>
void main()
{
float a = 3.4;
float a_frac = a - (int) a;
float a_int = a - a_frac;
printf("Number = %f, Integer = %f, Fraction = %f", a, a_frac, a_int);
}