如何连接两个整数变量并生成一个float变量?

时间:2014-03-10 10:24:05

标签: c math arduino operators

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

实施例。 我没有功能调用。我在哪里存储从KEY到VARIABLE lat_int和lat_float收到的值。我希望在全球范围内将两种产品合并为一种全球性的商品。

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


}

7 个答案:

答案 0 :(得分:6)

这不是一个真正的代码问题,而是一个基本的算术问题:

  

如何转换两个值,以便aba.b

只需使用加法和乘法:

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

r = a+(b/100f);

不需要操作员这样做(它需要两条CPU指令来计算这个值,调用一个函数会更贵);并且它不被称为“连接”,而是加法和乘法(再次)。

如果你想要连接,你应该用“10”和“20”作为你用点连接的字符串,例如,这是一个字符串连接:

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

答案 1 :(得分:2)

使用

  

math.h中

int nDigits = floor(log10(abs(the_integer))) + 1;

然后你可以得到10的力量:

int power = pow(10,nDigits);

最后:

float result = a + b / power;

答案 2 :(得分:1)

不需要额外的库文件(例如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; 
}

答案 3 :(得分:0)

您可以将此整数值转换为float。

例如,将 10视为10.00 ,将 20视为00.20

然后执行加法操作a + b,这将给你输出10.20

答案 4 :(得分:0)

你可以将b除以10 ^ p,其中p是它的字符串长度,然后将a加到b 例 如果a是1000而b是323那么b长度= 3 所以你将b除以1000它将是0.323,然后只需将a加到b

答案 5 :(得分:0)

如果你真的只想连接两个整数,你可以使用c ++ stringstream来实现这一点,例如:

#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

Ideone example

答案 6 :(得分:0)

您还可以使用printf()strtof()

的组合
#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);
}