2009-11-23 2 views
6

Я хочу, чтобы отобразить число с запятой и десятичной точкидисплей число с запятой и десятичной точки

case1: пример если номер 3494309432324

дисплей в 34,94,30,94,32,324 но не 34,94,30,94,32,324.00

Случай 2: если число имеет десятичные значения их до 2-х знаков после запятой и запятые

дисплей в 12,22,222.32

В настоящее время я делаю это для 2-х знаков после запятой, но я не получаю запятые

Label9.Text = sisRatio.ToString("#0.00");

любые предложения ..

благодаря

+0

Из любопытства: Почему вы хотите отделить номер после * двух цифр (а не после * трех цифр)? – Heinzi

+1

@Heinzi: Я считаю, что вопрос связан с тем, как цифры представлены в Индии. –

+0

@Fredrik: Спасибо, это приятно знать. – Heinzi

ответ

11

Предполагая, что вам нужно обычное 3 онемение ERS то запятая, я думаю, что это будет делать то, что вам нужно:

Label9.Text = sisRatio.ToString("#,##0.##"); 

Одна небольшая проблема с этим состоит в том, что он будет только один знак после запятой, если второй из них будет 0

1

Это будет работать:

Label9.Text = sisRatio.ToString("#,0.00"); //changed from "#0,0.00" to "#,0.00" 
4

Try:

Label9.Text = sisRatio.ToString("##,0.00"); 

Я предполагаю, что вы хотите, чтобы отделить группы тысячами, а не сотни, как в вашем вопросе. Обратите внимание, что это будет использовать локализованный разделитель для текущей культуры.

+0

@ Jamie, есть несколько культур, которые используют 2-значную группировку, а некоторые (как в примере OP), которые используют 3 цифры для правой группы, а затем 2-значные группы после этого. Эта информация может быть получена из 'CultureInfo.CurrentCulture.NumberFormat.NumberGroupSizes'. –

+0

@Frederik: Спасибо, что указали это. Я создал несколько приложений, знакомых с локалью, и раньше не сталкивался с этим. Интересно, может ли группировка моей зарплаты в 2-значных группах заставить меня чувствовать себя лучше о сумме? –

4

Следующий подход должен дать вам то, что вы ищете ,:

double d = 123456789.1; 
string format = d.ToString().IndexOf(NumberFormatInfo.CurrentInfo.NumberDecimalSeparator) >=0 ? "#,##0.00" : "#,##0"; 
Console.WriteLine (d.ToString(format)); 

Это также будет работать для культур, которые не имеют 3-значные группы.

2

Кажется, что есть два способа ответить на этот вопрос:

  1. Алгоритмического ответ, который дает число в заданном формате т.е. 2 цифры между запятыми.

  2. Разработка, что это локальное относительное решение, так как я не могу получить ни одно из данных предложений ToString() для работы на моем ПК.

Этот вопрос меня поймал изначально, поскольку это не так просто, как кажется.

-1

Try This

Private Sub frmMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
      Thread.CurrentThread.CurrentCulture = New CultureInfo("hi-IN") 
    End Sub 

и .....

Private Sub txtData_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtData.Leave 
     If IsNumeric(txtData.Text) Then 
      Dim xData As Integer = txtData.Text 
      txtData.Text = xData.ToString("##,0.00") 
     End If 
    End Sub 
Смежные вопросы