簡體   English   中英

如何在float中提取小數點后的數字並將其存儲在char Array中

[英]How to extract digits after decimal point in float and store in char Array

我參考了以下問題,但我需要提取小數點后的數字並將其存儲在char *array

1. 如何將float存儲在float []數組中

2. 提取python中float的數字

例如:

 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM