Beheben: mbed printf() ignoriert Dezimalstellen in PlatformIO
English
Deutsch
Problem:
Sie verwenden Code wie
example.cpp
printf("%.2f\n", myFloat);in Ihrer mbed/PlatformIO-Anwendung, aber anstatt myFloat mit 2 Dezimalstellen auszugeben, wird es immer mit 6 Dezimalstellen ausgegeben (wie 0.000000).
Lösung
mbed verwendet standardmäßig die minimal-printf-Bibliothek, die so konfiguriert ist, dass sie Platz auf dem Mikrocontroller spart. Daher ist die Unterstützung für maximale Dezimalstellen bei Floats standardmäßig deaktiviert. Um alle printf-Funktionen auf Kosten von mehr Flash-Verbrauch und viel langsamerer Ausführung zu erhalten, fügen Sie mbed_app.json im Stammverzeichnis des PlatformIO-Projekts mit "target.printf_lib": "std" hinzu:
mbed_app.json
{
"target_overrides": {
"*": {
"target.printf_lib": "std"
}
}
}Siehe die Seite Plattform-Konfigurationsoptionen für weitere Details und ähnliche Optionen.
Check out similar posts by category:
C/C++, Mbed, PlatformIO
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow