将十进制值转换为货币字符串以在HTML中显示的最佳方法

时间:2008-09-17 22:59:54

标签: asp.net browser localization currency

我想在我的网上商店显示我的产品的价格。 我现在正在做:

<span class="ourprice">
     <%=GetPrice().ToString("C")%>
</span>

GetPrice()返回小数。所以这当前返回一个值,例如“12.00£”

我认为输出“£12.00”的正确HTML是“&pound;12.00”,所以尽管在大多数浏览器中都可以正常使用,但某些浏览器(Mozilla)显示为12.00美元。

(服务器位于英国,在web.config中正确设置了本地化)。

以下是改进,还是有更好的方法?

<span class="ourprice">
     <%=GetPrice().ToString("C").Replace("£","&pound;")%>
</span>

6 个答案:

答案 0 :(得分:3)

试试这个,它会使用您为应用程序设置的语言环境:

<%=String.Format("{0:C}",GetPrice())%>

答案 1 :(得分:3)

使用

GetPrice().ToString("C", CultureInfo.CreateSpecificCulture("en-GB"))

答案 2 :(得分:2)

£符号(U + 00A3),以及html实体&amp; #163;和&amp;磅;应该在浏览器中呈现相同的内容。

如果浏览器无法识别£,则可能无法识别实体版本。 它是在ISO 8859-1(Latin-1)中,所以如果Mozilla浏览器无法呈现它(我的FF当然可以),我会感到惊讶。

如果你看到一个$符号,你可能有两件事: 1.浏览器默认语言为en-us 2. Asp.net正在进行自动语言环境切换。默认的web.config设置类似于

<globalization   culture="auto:en-us"  uiCulture="auto:en-US" />

当您(几乎可以肯定)想要仅限英国的价格时,只需在web.config中指定区域设置:

  <globalization   culture="us"  uiCulture="en-gb" />

(或在页面级别:)

  <%@Page Culture="en-gb" UICulture="en-gb" ..etc... %>

此后字符串格式如String.Format(“{0:C}”,GetPrice())和GetPrice()。ToString(“C”)将使用en-GB语言环境,因为asp.net将设置现在的文化为你

(尽管如果你是偏执狂,你可以在重载中指定en-gb文化。)

答案 3 :(得分:1)

您可以编写一个函数来执行从price到string的转换。这样您就可以对输出进行大量控制。

区域设置的问题在于它依赖于Web服务器,而不依赖于Web浏览器。

答案 4 :(得分:0)

如果您需要明确说明本地化,您可以使用CultureInfo并将其传递给字符串格式化程序。

答案 5 :(得分:0)

只使用十进制值的ToString(“C2”)属性。在web.config中设置全球化 - 保持简单。