[英]How to extract digits after decimal point in float and store in char Array
我參考了以下問題,但我需要提取小數點后的數字並將其存儲在char *array
例如:
float = 1.24456
我的char *array
長度是2
預期產量:
array[0] = 2;
array[1] = 4;
array[2] = 4;
我需要在C中動態實現。
您可以使用<math.h>
modff
函數來隔離float
的小數部分,該函數通過引用返回小數部分作為函數的返回值,並返回整數部分作為參數:
float f = 3.141592f;
float numpart, fracpart;
fracpart = modff(f, &numpart);
完成此操作后,您可以使用常規的字符串構建功能創建字符串:
char buf[100];
snprintf(buf, 100, "%f", fracpart);
另一個選擇是將整個float
轉換為字符串,然后使用strchr(float_str, '.')
隔離小數部分。
數學方法稍微多一點,但靈活性可能會降低:
#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]); }
}
希望它的評論足夠好,以了解此處采取的步驟。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.