Melhor maneira de converter um valor decimal para uma string de moeda para exibição em HTML
-
01-07-2019 - |
Pergunta
Eu querendo mostrar preços para os meus produtos em minha loja online. Atualmente estou fazendo:
<span class="ourprice">
<%=GetPrice().ToString("C")%>
</span>
Onde getPrice () retorna um decimal. Portanto, este atualmente retorna um valor, por exemplo, "£ 12,00"
Eu acho que o HTML correto para uma produção de "£ 12,00" é "£12.00
", por isso, embora este está rendendo muito bem na maioria dos navegadores, alguns navegadores (Mozilla) mostram isso como US $ 12,00.
(O servidor é no Reino Unido, com localização está definido apropriadamente no web.config).
É a seguir uma melhoria, ou há uma maneira melhor?
<span class="ourprice">
<%=GetPrice().ToString("C").Replace("£","£")%>
</span>
Solução
O símbolo £ (U + 00A3), e as entidades HTML & # 163; e & libra; todos devem prestar o mesmo em um navegador.
Se o navegador não reconhece £, ele provavelmente não vai reconhecer as versões entidade. É na ISO 8859-1 (Latin-1), então eu ficaria surpreso se um navegador Mozilla não pode torná-lo (meu FF certamente pode).
Se você ver um sinal $, é provável que você tem duas coisas: 1. O idioma padrão do navegador é en-us 2. Asp.net está fazendo comutação local automática. A configuração web.config padrão é algo como
<globalization culture="auto:en-us" uiCulture="auto:en-US" />
Como você (quase certamente) quer UK-só os preços, basta especificar o local no web.config:
<globalization culture="us" uiCulture="en-gb" />
(ou em nível de página:)
<%@Page Culture="en-gb" UICulture="en-gb" ..etc... %>
Depois disso, a formatos de cadeia, tais como String ( "{0: C}", getPrice ()). E getPrice () ToString ( "C") vai utilizar a região en-GB como asp.net terá conjunto o CurrentCulture para você
(embora você pode especificar a cultura en-gb nas sobrecargas Se você é paranóico).
Outras dicas
Tente isso, ele vai usar seu aparelho de localidade para o aplicativo:
<%=String.Format("{0:C}",GetPrice())%>
Use
GetPrice().ToString("C", CultureInfo.CreateSpecificCulture("en-GB"))
Você poderia escrever uma função que iria realizar a conversão do preço a string. Desta forma, você tem um monte de controle sobre a saída.
O problema com locale é que é servidor web dependentes e não dependentes navegador.
Se você precisar declarar explicitamente a localização você pode usar o CultureInfo e passar isso para o formatador string.
apenas usar a propriedade de um valor decimal ToString ( "C2"). Defina o seu globalização no web.config -. Mantê-lo simples