@kjm This is a recurring discussion in Micropython. See also for instance: https://forum.micropython.org/viewtopic.php?f=2&t=802 https://github.com/micropython/micropython/issues/3516 But still, the number which the raspi (C-Python) displays is not the number internally stored. However, using a 64 bit float representation, the error is way smaller. Note also, that rounding was improved in the micrpython.org branch: https://github.com/micropython/micropython/commit/b768cc6ca8ed6d7430b86dc7ccb9ee2391b3a251 For the esp8266 build, I get: MicroPython v1.9.4-704-g62b4bebf-dirty on 2018-12-04; ESP module with ESP8266 Type "help()" for more information. >>> round(691.59, 1) 691.6 But not so for the ESP32 build. The loboris branch again delivers 691.6 But, so sum up: it is not the rounding, that "fails", it's the display of decimal fractions. If you just enter 691.6, REPL will show 691.5999. Similar with other numbers, but not every number.