Как конвертировать Char в Float
Как преобразовать значение без знака в число с плавающей запятой или двойное кодирование в AVR studio 4.?
Помогите, пожалуйста, я новичок, мой вопрос тоже может показаться глупым:/
Как будто у меня есть кнопка Char.
и я напечатал это на экране, используя lcd_gotoxy(0,0); lcd_puts (keyPressed);
Теперь я хочу использовать это значение для вычисления чего-то.. Как преобразовать его в число с плавающей запятой или двойное число? пожалуйста помоги
3 ответа
Если вы хотите, например, символ "а" как 65.0 в float, то способ сделать это
unsigned char c='a';
float f=(float)(c);//by explicit casting
float fc=c;//compiler implicitly convert char into float.
если вы хотите, например, символ '9' как 9.0 в float, то способ сделать это
unsigned char c='9';
float f=(float)(c-'0');//by explicit casting
float fc=c-'0';//compiler implicitly convert char into float.
если вы хотите преобразовать массив символов, содержащий число, чтобы плавать здесь, это путь
#include<string>
#include<stdio.h>
#include<stdlib.h>
void fun(){
unsigned char* fc="34.45";
//c++ way
std::string fs(fc);
float f=std::stof(fs);//this is much better way to do it
//c way
float fr=atof(fc); //this is a c way to do it
}
за дополнительной информацией обращайтесь по ссылке: http://en.cppreference.com/w/cpp/string/basic_string/stof http://www.cplusplus.com/reference/string/stof/
Попробуйте это, это работает для меня без использования какой-либо встроенной функции или файла заголовка.
#include <iostream>
using namespace std;
int main(){
int b[6];
int i = 0, counter = 0;
bool found = false;
float temp,temp2;
char a[6];
cin >> a;
while (a[i] != '\0')
{
b[i] = a[i];
if (b[i] == 46){
found = true;
}else{
b[i] -= 48;
}if (found != true){
counter++;
}
i++;
}
for (int j = 0; j < counter; j++) {
temp *= 10;
temp += b[j];
}
int dif = i - counter - 1;
for (int j = counter+1; j <=counter+dif; j++)
{
temp2 *= 10;
temp2 += b[j];
}
for (int k = dif;dif>0;dif--){
temp2 *=0.1;
}
temp+=temp2;
cout << "\nfloat = " << temp << endl;
}