Problém je v tom, že na BoundField je před formátováním aplikován HtmlEncode. Je to sice reportovaný a uznaný bug (špatně navrženo), nicméně z důvodu zpětné kompatibility budoucích verzí .NET Frameworku to už zřejmě zůstane v této podobě.
BoundField v GridView tedy ve výchozím nastavení nesprávně vyhodnotí DataFormatString u dat, čísel, atp. - například z hodnoty 0,123456 a formátu "aa {0:n1}" udělá "aa 0,123456".
Pomůže nastavit HtmlEncode = "false", tedy vypnout onen problematický HtmlEncode.
<asp:BoundField
DataField="MyField"
DataFormatString="{0:n2}"
HtmlEncode="false"
/>