#include <stdio.h>
#include <math.h>
int main()
{
float num = 1.24456;
int num_noDecimals = (int)num; //truncate decimals in original number
float num_onlyDecimals = num - (float)num_noDecimals; //obtain only the number after decimal
int x = 4; //number of digits past decimal to extract
num_onlyDecimals = num_onlyDecimals*pow(10,x); //move extracting digits left of decimal
int digits_forArray = (int)num_onlyDecimals; //truncate remaining digits right of decimal
char arr[x];
for(int i=x-1; i > -1; i--) { arr[i] = (char)(digits_forArray%10); digits_forArray = digits_forArray/10; }
for(int i=0;i<x;i++) { printf("arr[%d] = %d\n",i,arr[i]); }
}
4条答案
按热度按时间vkc1a9a21#
您可以通过在
<math.h>
中使用函数modff
来隔离float
的小数部分,该函数将小数部分作为函数的返回值返回,并通过引用将整数部分作为参数返回:一旦你完成了这一步,你就可以用一个传统的字符串构建函数来创建一个字符串:
另一种选择是将整个
float
转换为字符串,然后使用strchr(float_str, '.')
隔离小数部分:5kgi1eie2#
稍微更数学的方法,但可以说不太灵活的是:
希望它的评论足够好,以理解这里所采取的步骤。
fdx2calv3#
在我的代码中,我删除了整数部分,然后我将浮点部分反转为整数部分,将浮点部分的每个数字乘以数字10,然后我对数组中的每个数字进行分类
我的代码:
mfuanj7w4#
如果你只需要变量中小数点后的数字,你可以使用number - floor(number)
例如,如果你的数字是3.25,那么计算结果就是3.25 - 3。这将给予0.25