在C中将两个整数合并为integer.decimal

时间:2015-01-09 21:14:41

标签: c function merge

我有2个整数,我想将这两个数字合并为integer.decimal。例如:

int a = 12;
int b = 54367;

double c = aFunction(a,b);

然后我想要

  

c = 12.54367

我怎样才能在C中做到这一点?标准C库中是否有任何特定的“aFunction”?

4 个答案:

答案 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;
}