将 char A[] 转换为 double
convert char A[] to double
我有一个 arduino 代码,它以 char 数据类型输入音量,我想将它转换为双精度,我试过使用 atof,但它不起作用。我的代码有什么问题。对不起这里的新手!!
double v;
int data_count = 0;
int i;
char Data[16];
char volume[16];
char inputTime[16];
// Define the Keymap for Keypad
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'.', '0', '#', 'D'}
};
lcd.setCursor(0, 0);
lcd.print("Input Volume:");
if (customKey != NO_KEY && customKey != '#'
&& customKey != 'A' && customKey != 'B' && customKey != 'C'
&& customKey != 'D') {
Data[data_count] = customKey;
lcd.setCursor(data_count, 1);
lcd.print(Data[data_count]);
data_count++;
}
if (customKey == '#') {
volumelength = data_count;
for (i = 0; i < volumelength; i++) {
volume[i] = Data[i];
}
clearData();
nextstate();
data_count = 0;
v = atof(volume);
}
在 arduino 语言中有 toFloat()
( https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/tofloat/ )
else atof()
应该像在 avr-gcc stdlib.h
8 位 AVR CPU 库中一样工作阿杜伊诺
( https://www.nongnu.org/avr-libc/user-manual/group__avr__stdlib.html ) :
#include <stdlib.h>
char s[] = "11.248"
double f = 0;
f=atof(s);
另见 http://www.ethernut.de/nutwiki/index.php/Converting_Strings_to_Floating_Point_Values(ethernut 用于 8 位 CPUs)
可能会检查 Data
的内容是否真的是一个浮点数...
avr-gcc/arduino 中的另一个 atof
示例:https://forum.arduino.cc/index.php?topic=98595.0
我有一个 arduino 代码,它以 char 数据类型输入音量,我想将它转换为双精度,我试过使用 atof,但它不起作用。我的代码有什么问题。对不起这里的新手!!
double v;
int data_count = 0;
int i;
char Data[16];
char volume[16];
char inputTime[16];
// Define the Keymap for Keypad
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'.', '0', '#', 'D'}
};
lcd.setCursor(0, 0);
lcd.print("Input Volume:");
if (customKey != NO_KEY && customKey != '#'
&& customKey != 'A' && customKey != 'B' && customKey != 'C'
&& customKey != 'D') {
Data[data_count] = customKey;
lcd.setCursor(data_count, 1);
lcd.print(Data[data_count]);
data_count++;
}
if (customKey == '#') {
volumelength = data_count;
for (i = 0; i < volumelength; i++) {
volume[i] = Data[i];
}
clearData();
nextstate();
data_count = 0;
v = atof(volume);
}
在 arduino 语言中有 toFloat()
( https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/tofloat/ )
else atof()
应该像在 avr-gcc stdlib.h
8 位 AVR CPU 库中一样工作阿杜伊诺
( https://www.nongnu.org/avr-libc/user-manual/group__avr__stdlib.html ) :
#include <stdlib.h>
char s[] = "11.248"
double f = 0;
f=atof(s);
另见 http://www.ethernut.de/nutwiki/index.php/Converting_Strings_to_Floating_Point_Values(ethernut 用于 8 位 CPUs)
可能会检查 Data
的内容是否真的是一个浮点数...
avr-gcc/arduino 中的另一个 atof
示例:https://forum.arduino.cc/index.php?topic=98595.0