According to POSIX, LC_NUMERIC "shall affect the format of numbers written using the e , E , f , g , and G conversion specifier characters (if supported)." $ LC_NUMERIC=pl_PL.utf8 bash -c 'printf "%f\n" 42' 42,000000 $ LC_NUMERIC=pl_PL.utf8 dash -c 'printf "%f\n" 42' 42.000000
More than 16 years later, this bug is still there. The workaround I'm using is to force the use of the external binary instead of the builtin with the "env" command. $ printf "%.2f" 0.15 0.15 $ env printf "%.2f" 0.15 0,15 Best regards, Celelibi