I'm sure you know better then I what the file nbill.number.format.php is supposed to do, but all of your suggestions don't work,
I run a small script (locale.php) to figure out what locales are available on the server and the nl_NL is present.
Digging a bit more into the file nbill.number.format.php, I do see however several places that do something with the separator, for instance line 50
$str_float = str_replace(",", ".", $float . ""); //Convert float to string, and if locale indicates a comma decimal separator, replace with dot
$ret_val = str_replace(",", "!!#!!", $ret_val); //In case decimal point becomes comma
line 107 you revert back to local en_US
@setlocale(LC_ALL, "en_US", "en-US", "en", "English_United States", "en_US.UTF-8");
And several places more, but I'm not a programmer (can make only small integration changes :-) ), so I'm a bit concerned that your suggestion has the right intend, but fails due to numerous 'hardcoded overwrites' in other places.
It would really be nice to show the HTML invoices as well as the frontend payments using the local settings.