Типы данных

John2015
Offline
Зарегистрирован: 02.02.2016

Добрый вечер подскажите пожалуйста как мне вывести цифры после точки   для математических функций.

Я посылаю в сериал пор N,111.111

А у меня приходит в intVar2,3      “111.000”  а надо 111.111

Serial.println(intVar2,3);

 

  sscanf(buffer, "%[^','],%[^','],%s", &unitID_in, &command_in, &data_in);
     
  }
   

    if ((String)unitID_in == "N"){ 
    
    
    
     String str2 = command_in;
   
   
   
        float intVar2;
String stringVar2 = str2;
intVar2=stringVar2.toInt();
    
     Serial.println(command_in);
     
     Serial.println(stringVar2);
     
      Serial.println(str2);
    
    Serial.println(intVar2,3);
    
 
    
    
    
      unitID_in [0] = '\0'; 
      command_in [0] = '\0';            
    }
     

}

 

 

 

 

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015
  float intVar2;
15 String stringVar2 = str2;
16 intVar2=stringVar2.toInt();

Не кажется странным ?

 

John2015
Offline
Зарегистрирован: 02.02.2016

Если так делаю всё выводится .

 

void loop() {         
 
  

    
       float intVar2 = 0.111;

    
    float intVar1 = 111.111;
    
    
    
    
    float rez ;
    
    rez  = intVar1 +  intVar2;
    
    
    Serial.println(rez,3);
    
    delay(1000);
     

 

John2015
Offline
Зарегистрирован: 02.02.2016

  Объясните пожалуйста

John2015
Offline
Зарегистрирован: 02.02.2016

То что два раза в String это я понял

T.Rook
Offline
Зарегистрирован: 05.03.2016

John2015 пишет:

То что два раза в String это я понял

а то что один раз в INT?

John2015
Offline
Зарегистрирован: 02.02.2016

T.Rook пишет:

John2015 пишет:

То что два раза в String это я понял

а то что один раз в INT?

Если вы говорите про этот int  тоя ставил разные переменные не помогает.

 

 int i=0;
  char buffer[100];
 

  if(Serial.available()){
     delay(100);

 

John2015
Offline
Зарегистрирован: 02.02.2016

Или как то нужно по-другому преобразовать?

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

мля....

построчно:

1) float intVar2; // объявление переменной типа float !

2) intVar2=stringVar2.toInt(); // попытка присвоить переменной float значение преобразования строки в int !!!

ответ: intVar2=stringVar2.toFloat();

John2015
Offline
Зарегистрирован: 02.02.2016

xDriver пишет:

мля....

построчно:

1) float intVar2; // объявление переменной типа float !

2) intVar2=stringVar2.toInt(); // попытка присвоить переменной float значение преобразования строки в int !!!

ответ: intVar2=stringVar2.toFloat();

 

вот так получилось

 

String stringVar = command_in;
   
   
   
   float floatVar;
char floatbufVar[32];

stringVar.toCharArray(floatbufVar,sizeof(floatbufVar));
floatVar=atof(floatbufVar);
      

 

John2015
Offline
Зарегистрирован: 02.02.2016

Спасибо за подсказки