【发布时间】:2020-05-02 23:58:32
【问题描述】:
int decimalSplit(float f)
{
char s_value[60], s_integral[60], s_fractional[60];
int i, found = 0, count = 1, integral, fractional;
sprintf(s_value, "%f", f);
for (i = 0; s_value[i] != '\0'; i++)
{
if (!found)
{
if (s_value[i] == '.')
{
found = 1;
s_integral[i] = '\0';
continue;
}
s_integral[i] = s_value[i];
count++;
}
else
s_fractional[i - count] = s_value[i];
}
s_fractional[i - count] = '\0';
integral = atoi(s_integral);
fractional = atoi(s_fractional);
return integral;
}
您好,我正在尝试制作一个将浮点数拆分为整数部分(作为 int)和小数部分(作为 int)的程序。如果程序将这些存储在一个数组中并返回该数组,这对我来说也是 QoL 升级。(在示例代码中,实现只返回一个整数。) 例如,682.1 应该返回 682 和 1。(最好在一个数组中)我希望我的程序找到“。”在给定的参数中,从积分中创建一个新整数,并从分数中创建另一个整数。
在在线 IDE 中,我的代码可以工作,但是在我的 atmel 解决方案中,我收到“Decimalsplit”错误的“冲突类型”。我想听听您的意见。
【问题讨论】:
-
你想要
682.01给什么?同682.1? -
我希望我的代码给出 682 和 01。
-
但是作为一个整数,
01和1是一样的。您确定要将小数部分表示为整数吗? -
总是(是的,总是)比
float更喜欢double。 -
2.99999999999420125呢?
标签: c floating-point