Hi Jamie,
Currently if you force a culture it will also set the UI culture to the same culture unless you specify forcing a different culture for UI.
The way I handle this in my commerce features is to not depend on forcing any culture with those settings, but specifically get a CultureInfo object for the site currency like this:
protected CultureInfo currencyCulture;
currencyCulture = ResourceHelper.GetCurrencyCulture(siteSettings.GetCurrency().Code);
then I use that culture to format prices, like in this data binding example from the WebStore product list
<span class="price"><%# string.Format(CurrencyCulture, "{0:c}",Convert.ToDecimal(Eval("Price"))) %></span>
I will add a Web.config setting to allow disabling setting of the UI culture when setting the thread culture
<add key="SetUICultureWhenSettingCulture" value="false" />
then you would be able to make it work with your existing code. I'll leave it up to you which solution to use.
Hope that helps,
Joe