我有2个整数,我想将这两个数字合并为integer.decimal。例如:
int a = 12;
int b = 54367;
double c = aFunction(a,b);
然后我想要
c = 12.54367
我怎样才能在C中做到这一点?标准C库中是否有任何特定的“aFunction”?
答案 0 :(得分:4)
我认为没有任何东西可以合并两个整数,但是来自log10
的{{1}}和pow
,这很容易!
math.h
答案 1 :(得分:1)
首先,函数的第二个参数必须是unsigned
类型。将它作为signed
类型是没有意义的。鉴于此,以下功能对我有用。
double aFunction(int a, unsigned int b)
{
unsigned int b1 = b%10;
unsigned int b2 = b/10;
double dec = 0.0;
while ( b2 > 0 )
{
dec = (dec + b1)/10.0;
b1 = b2%10;
b2 = b2/10;
}
dec = (dec + b1)/10.0;
return a + dec;
}
请参阅http://ideone.com/GoBUcB处的工作代码。
答案 2 :(得分:0)
我打算发布这个,然后 yurtoglu 做了,如果正确的答案选择他的答案,我会发布我的,因为我认为你可以更好地理解我的功能。 / p>
double merge(int integerPart, int decimalPart)
{
double result;
int exponent;
result = (double)integerPart;
exponent = (int)log10(decimalPart);
result += (double)decimalPart / pow(10.0, 1 + exponent);
return result;
}
答案 3 :(得分:0)
这个答案使用unsigned
个整数,因为问题陈述在签名时不清楚。
#include <stdio.h>
double aFunction (unsigned a, unsigned b) {
double d = (double)b;
while (d >= 1)
d /= 10;
return (double)a + d;
}
int main() {
int a = 12;
int b = 54367;
double c = aFunction(a,b);
printf("%f\n", c);
return 0;
}