On Sat, 13 Oct 2018 at 06:48, Sebastian Moeller <moell...@gmx.de> wrote: > > Dear mhei, > > > > > On Oct 12, 2018, at 20:53, Michael Heimpold <m...@heimpold.de> wrote: > > > > Am Donnerstag, 11. Oktober 2018, 22:44:53 CEST schrieb Sebastian Moeller: > >> Dear Luiz, > >> > >> thank you very much for this information. By now I have realized that > >> printf > >> evaluated locale (specifically LC_NUMERIC) at least on non-openwrt unices, > >> which makes it unfortunately unusable for my purpose. > > > > forcing local, e.g. > > LANG=C printf "%0.3f" 47.11 > > does not help? > > That might actually work, I tried LC_NUMERIC which did not work on > openwrt. > > > Maybe you could elaborate on your purpose? > > Well I wanted to have a shell variable for configuring a buffer by > the time in milliseconds required to empty that buffer (at a given > bandwidth), but wanted to actually allow values down to microseconds. > So I tried to use the following to effectively convert a value in > (fractional) milliseconds into microseconds for use by the actual consumer > like: > TMP=1.015 ; printf %.0f\n "${TMP}e3"
Multiple a number by 1000 can be simulated with regex. Though I would not use this when possible f() { local v="$1" [ "${v%.*}" != "$v" ] || v="$v." v=$(echo "${v}000" | sed -re 's/([0-9]+)\.([0-9]{3}).*/\1\2/') echo "$1 $v" } f 1 f 1. f 1.0 f 1.12 f 1.123 f 1.1234 Regards, yousong _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel