如果给定数字为浮点数,在C语言中为something.x,我将如何产生整数x?

问题描述 投票:0回答:3

在C中,如何提取浮点数的小数部分,并将其存储为整数。例如,如何从浮点数3.14159生成整数14159?从1.1到10000?从1.00001开始为1?我不允许使用库函数,只能使用内置的C功能。我正在尝试获取每个数字的模数,但是可以,所以我需要先将其转换。我将浮子乘以什么?浮点数的精度是多少,因此我可以乘以从所有小数位产生一个整数?

我这样做是为了将浮点数转换为字符串。我已经编写了一个int到字符串函数,并且我的计划是将其应用于float的int部分,添加一个小数点,将float小数转换为整数,再次使用我的函数进行转换,并连接结果。因此,现在如何从浮点数的小数产生整数?

c floating-point
3个回答
0
投票

如果您不必担心非常大的数字,则可以通过转换为long来最轻松地做到这一点:

v = v - (long)v;   // remove the integer part
int frac = (int)(v * 100000);

将为您提供小数点后5位数字。这样做的问题是,如果初始值太大而无法转换成长整数,则会产生不确定的行为。您可能还希望进行不同的舍入(将int截断为0)。


-1
投票

[我觉得您应该使用模来获取小数部分,将其转换为字符串,计算字符数,并使用该乘数将余数转换为整数。


-1
投票
#include <stdio.h>

int main(void) {
    double t = 3.1415926;
    unsigned long x = 0;

    t = (t<0)? -t : t;  // To handle negative numbers.
    for(t = t-(unsigned long)t; t > 0.00001; t = 10*t-(unsigned long)(10*t))
    {
        x = 10*(x+t);
    }

    printf("%lu\n", x);
    return 0;
}

输出:

Success #stdin #stdout 0s 4256KB
1415926
© www.soinside.com 2019 - 2024. All rights reserved.