C 如何连接两个整数变量并生成浮点变量?

C 如何连接两个整数变量并生成浮点变量?,c,math,arduino,operators,C,Math,Arduino,Operators,我有两个整数变量,结果必须存储在浮点中。我想连接两个整数变量并将它们存储为浮点值。让我知道一种连接两个整数值的方法 例如。 我有下面的函数调用。其中,我将从KEY接收的值存储到变量lat_int和lat_float。我想将两者合并并存储在LATITUDE中,LATITUDE全局声明为浮点值 void setCustomCoordinate(int cord_para[]) { lat_int=cord_para[0]; lat_float=cord_para[1]; long_int=co

我有两个整数变量,结果必须存储在浮点中。我想连接两个整数变量并将它们存储为浮点值。让我知道一种连接两个整数值的方法

例如。 我有下面的函数调用。其中,我将从KEY接收的值存储到变量lat_int和lat_float。我想将两者合并并存储在LATITUDE中,LATITUDE全局声明为浮点值

void setCustomCoordinate(int cord_para[])
{
 lat_int=cord_para[0];
 lat_float=cord_para[1];
 long_int=cord_para[2];
 long_float=cord_para[3];

  latitude=(lat_int+lat_float)/100);
 longitude=(long_int+long_float)/100));


}

可以将此整数值转换为浮点值

例如考虑<强> 10为10 < /强>和<强> 20为0.20 < /强>


然后执行加法运算a+b,输出为10.20。您可以将b除以10^p,其中p是其字符串长度,然后将a添加到b 实例 如果a是1000,b是323,那么b长度=3
所以你将b除以1000,它将是0.323,然后把a加到b上这不是一个真正的代码问题,而是一个基本的算术问题:

如何转换两个值,以便
a
b
给出
a.b

简单地使用加法和乘法:

int a=10;
int b=20;
float r=0;

r = a+(b/100f);
不需要操作员这样做(需要两条CPU指令来计算这个值,调用一个函数会更昂贵);这不是所谓的“串联”,而是加法和乘法(再次)

如果需要串联,则应使用点串联“10”和“20”字符串,例如,这是字符串串联:

printf("%s.%s", "10", "20");
使用

数学

然后你可以得到10的幂:

int power = pow(10,nDigits);
最后:

float result = a + b / power;

<>如果你真的想要连接两个整数,你可以使用C++ StrugScript来完成这个任务,比如:

#include <iostream>
#include <sstream>
#include <string>
using namespace std;

int main()
{
  int a = 4;
  int b = 5;
  ostringstream oss;
  oss << a << "." << b;
  istringstream iss(oss.str());
  float c;
  iss >> c;
  cout << c << endl;

  return 0;
}


Output: 4.5
#包括
#包括
#包括
使用名称空间std;
int main()
{
INTA=4;
int b=5;
ostringstream oss;

oss您还可以使用
printf()
strof()
的组合:

定义GNU源
#包括
#包括
int
main(int argc,char*argv[])
{
INTA=10;
int b=20;
浮动f;
char*buf;
如果(asprintf(&buf,“%d.%d”,a,b)>0){
f=strtof(buf,空);
printf(“%f\n”,f);
免费(buf);
}
退出(退出成功);
}
不需要额外的库文件(如math.h),可以像这样创建
concat
函数

float concat(int a, int b){
    float c;
    c = (float)b;
    while( c > 1.0f ) c *= 0.1f; //moving the decimal point (.) to left most
    c = (float)a + c;
    return c; 
}

为什么需要中间浮点?因为这不会创建浮点变量。他现在可以使用浮点变量
c
,它将是
4.5
,用于他想用它做的任何事情。
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char *argv[])
{
    int a = 10;
    int b = 20;
    float f;
    char *buf;

    if (asprintf(&buf, "%d.%d", a, b) > 0) {
        f = strtof(buf, NULL);
        printf("%f\n", f);
        free(buf);
    }

    exit(EXIT_SUCCESS);
}
float concat(int a, int b){
    float c;
    c = (float)b;
    while( c > 1.0f ) c *= 0.1f; //moving the decimal point (.) to left most
    c = (float)a + c;
    return c; 
}