@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.