注意:我在 C++ 的 Arduino 变体中编写以下代码。
从给定的浮点数(总是有四个小数位)中,我希望只提取小数部分(“尾数”)作为整数。
所以我尝试了这种方法:
void ExtractDecimalPart(float Value) {
int IntegerPart = (int)(Value);
int DecimalPart = 10000 * (Value - IntegerPart); //10000 b/c my float values always have exactly 4 decimal places
Serial.println (DecimalPart);
}
但上述结果如下:
ExtractDecimalPart (1234.5677); //prints 5677
ExtractDecimalPart (1234.5678); //prints 5677
ExtractDecimalPart (1234.5679); //prints 5678
注意后两者打印错误;我猜这是由于浮点精度问题。
解决上述问题的经济方法是什么?