在C中,如何提取浮点数的小数部分,并将其存储为整数。例如,如何从浮点数3.14159生成整数14159?从1.1到10000?从1.00001开始为1?我不允许使用库函数,只能使用内置的C功能。我正在尝试获取每个数字的模数,但是可以,所以我需要先将其转换。我将浮子乘以什么?浮点数的精度是多少,因此我可以乘以从所有小数位产生一个整数?
我这样做是为了将浮点数转换为字符串。我已经编写了一个int到字符串函数,并且我的计划是将其应用于float的int部分,添加一个小数点,将float小数转换为整数,再次使用我的函数进行转换,并连接结果。因此,现在如何从浮点数的小数产生整数?
如果您不必担心非常大的数字,则可以通过转换为long来最轻松地做到这一点:
v = v - (long)v; // remove the integer part
int frac = (int)(v * 100000);
将为您提供小数点后5位数字。这样做的问题是,如果初始值太大而无法转换成长整数,则会产生不确定的行为。您可能还希望进行不同的舍入(将int截断为0)。
[我觉得您应该使用模来获取小数部分,将其转换为字符串,计算字符数,并使用该乘数将余数转换为整数。
#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