在 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.h
的 log10
和 pow
,这很容易!
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 处的工作代码。
我有 2 个整数,我想将这两个数字合并为 integer.decimal。例如:
int a = 12;
int b = 54367;
double c = aFunction(a,b);
那我要
c = 12.54367
我怎样才能用 C 实现这个?标准C库中有没有具体的"aFunction"?
我不认为有任何东西可以合并两个整数,但是使用来自 math.h
的 log10
和 pow
,这很容易!
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 处的工作代码。