我们如何提取浮点数的小数部分并将小数部分和整数部分存储到两个单独的整数变量中?
你使用的modf
功能:
double integral; double fractional = modf(some_double, &integral);
您也可以将其强制转换为整数,但要注意您可能会溢出整数.结果是不可预测的.
试试这个:
int main() { double num = 23.345; int intpart = (int)num; double decpart = num - intpart; printf("Num = %f, intpart = %d, decpart = %f\n", num, intpart, decpart); }
对我来说,它产生:
Num = 23.345000, intpart = 23, decpart = 0.345000
这似乎是你要求的.
快速"坚果壳"最明显的答案似乎是:
#define N_DECIMAL_POINTS_PRECISION (1000) // n = 3. Three decimal points. float f = 123.456; int integerPart = (int)f; int decimalPart = ((int)(f*N_DECIMAL_POINTS_PRECISION)%N_DECIMAL_POINTS_PRECISION);
您可以通过更改N_DECIMAL_POINTS_PRECISION
以满足您的需要来更改所需的小数点数.