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

Merge two integers as integer.decimal in C

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

int a = 12;
int b = 54367;

double c = aFunction(a,b);

那我要

c = 12.54367

我怎样才能用 C 实现这个?标准C库中有没有具体的"aFunction"?

我不认为有任何东西可以合并两个整数,但是使用来自 math.hlog10pow,这很容易!

double aFunction(int a, int b)
{
    int decimals = log10(b) + 1;
    return a + b*pow(10.0, -decimals);
}

我打算 post 这个然后 myurtoglu 做了,如果这是正确的答案选择他的答案,我会 post 我的因为我认为你可以更好地理解我的功能。

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

这个答案使用 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;
}

首先,函数的第二个参数必须是 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 处的工作代码。