我在 arduino 和 eclipse 一起工作。我想将 double 转换为 char 数组以存储到 EEPROM。从另一个问题我找到了问题的答案。我改变了它以满足我的需求。但我得到的数字并不完全相同。
代码是:
#include "Arduino.h"
#include "EEPROM.h"
char finalArray[8];
double final;
double d;
int main(void)
{
init();
setup();
for (;;)
loop();
return 0;
}
void setup() {
Serial.begin(115200);
d = 557.254;
char* byteArray = reinterpret_cast<char*>(&d);
for(int i=0;i<8;i++){
EEPROM.write(i,byteArray[i]);
}
for(int i=0;i<8;i++){
finalArray[i]=EEPROM.read(i);
}
}
void loop() {
final = *reinterpret_cast<double*>(finalArray);
double diff=d-final;
final+=diff;
Serial.println(d,9);
Serial.println(diff,9);
Serial.println(final,9);
delay(1000);
}
在终端我得到价值958.25402
而不是958.25400
。如果我在打印时要求 9 个十进制数字,而不是 5 个,我会得到 number 958.254028320
。解决办法是什么?
serial.print 给出数字:
557.254028320
0.000000000
557.254028320
所以问题在于双d的初始化。