2013-08-28 42 views
5

如何在AVR Studio 4中將無符號字符值轉換爲浮點數或雙精度值?如何將Char轉換爲Float

請幫助我是初學者,我的問題可能聽起來愚蠢太:/

像我有一個char在keyPressed

,我還打印了使用 lcd_gotoxy屏幕上的(0,0) ; lcd_puts(keyPressed);

現在我想用這個值來計算東西.. 如何將其轉換爲浮點數或雙精度?請幫助

+0

爲什麼'float'或'double'而不是'int'? –

+2

,因爲我需要十進制值說,像14.6433 –

+0

這個問題已經解決thanx所有.. 請移動到新的問題:) http://stackoverflow.com/questions/18506198/how-to-store-a-數字十進制格式在AVR –

回答

8

如果你想例如字符「a」作爲浮法65.0然後做到這一點的方法是

unsigned char c='a'; 
float f=(float)(c);//by explicit casting 
float fc=c;//compiler implicitly convert char into float. 

如果你想例如字符「9」爲浮動9.0,然後一路做到這一點是

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/

+0

感謝您的迴應.. 但我的字符值不是恆定的,它每次使用鍵盤饋送.. 說它是16.853 現在我想將其轉換成一個浮點數或雙精度要進一步使用.. :/ –

+0

這不是一個'字符',而是一組字符' –

+1

您正在將「字符」與字符*字符串*混淆。查看'atof'(但是首先查找「如何在C中使用字符串) – usr2564301

1

字符數組輸入您可以使用atof