Pergunta

Eu tenho um número decimal, digamos 1234.500.

Eu quero exibi -lo como 1.234,5.

Atualmente, estou convertendo -o em um dobro para remover os 0 de atrás.

string.Format("{0:0,0}",1234.500) Remove o local decimal, e outras opções de formatação parecem usar dois lugares decimais, independentemente.

Alguém pode oferecer informações?

Foi útil?

Solução

Você deve usar uma formatação personalizada como #,##0.00

string s = string.Format("{0:#,##0.00}", xx);

Vai produzir 1,234.50 Quando xx = 1234,5m
esqueça de converter para double, isso não ajudará.

Outras dicas

Você está ciente de que o .NET possui suporte interno para formatar corretamente os números de acordo com as configurações regionais de cada usuário do seu aplicativo? Pode ser melhor aproveitar as próprias configurações regionais do usuário (a estrutura .NET já conhece todas as configurações certas).

No entanto, se você deseja corrigir seu aplicativo para formatar números em um ambiente regional específico, ainda pode levar um local específico de sua escolha e força .NET para usá -lo como base de toda a formatação (não apenas números):

using System.Globalization;
using System.Threading;
...
CultureInfo us = new CultureInfo("en-US");

e depois

Thread.CurrentThread.CurrentUICulture = us;

ou apenas

Console.WriteLine(d.ToString("c", us));

Você deve estar ciente de que o uso de vírgulas como milhares de separadores é apropriado para o Reino Unido e os EUA, mas não é como milhares devem ser exibidos em outros países

"Mil e vinte e cinco são exibidos como 1.025 nos Estados Unidos e 1,025 na Alemanha. Na Suécia, o separador de milhares é um espaço"

MSDN tem seção dedicada Devotados a este tópico que eles chamam de 'globalização' (ou seja, esse é um bom termo de pesquisa, se você precisar caçar mais detalhes). Essa página descreve como o uso do sinal de libra funciona como um espaço reservado para remover os zeros à direita (conforme sugerido por Henk Holterman em um comentário anterior).

Veja também Strings de formato numérico personalizado.

Outra alternativa:

decimal d = 1234.56m;
string s = d.ToString("N");    // 1,234.56

Você já tentou isso?

   String.Format("{0:0,0.00}", 1234.560);

Experimente isso!

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        Try
            TextBox1.Text = Format(CInt(TextBox1.Text), "#,#")
            TextBox1.SelectionStart = TextBox1.Text.Length
        Catch ex As Exception

        End Try

End Sub

Experimente isso:

string myNumber = string.Format("{0:#,0.00}", 1234.500);

(Eu já vi isso nos relatórios do RDLC)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top