2009-08-18 3 views
35
public void LoadAveragePingTime() 
    { 
     try 
     { 
      PingReply pingReply = pingClass.Send("logon.chronic-domination.com"); 
      double AveragePing = (pingReply.RoundtripTime/1.75); 

      label4.Text = (AveragePing.ToString() + "ms");     
     } 
     catch (Exception) 
     { 
      label4.Text = "Server is currently offline."; 
     } 
    } 

В настоящее время мой label4.Text получает что-то вроде: «187.371698712637».Оставьте только два знака после запятой после точки

мне нужно, чтобы показать что-то вроде: «187,34»

только два сообщения после DOT. Кто-нибудь может мне помочь?

+1

FYI - Я думаю, вы имели в виду, что он должен отображать 187,3 * 7 *, а не .34 –

ответ

90

string.Format - твой друг.

String.Format("{0:0.00}", 123.4567);  // "123.46" 
+2

Вы Googled на том же месте, но не дали ему кредита. :-) –

+0

И снова я поражен скоростью этого сайта. Спасибо за помощь, отлично работает! –

+0

@Steve, да выглядит так! По крайней мере, у вас есть больше репутации: P –

30
// just two decimal places 
String.Format("{0:0.00}", 123.4567);  // "123.46" 
String.Format("{0:0.00}", 123.4);   // "123.40" 
String.Format("{0:0.00}", 123.0);   // "123.00" 

http://www.csharp-examples.net/string-format-double/

редактировать

Понятия не имею, почему они использовали "String" вместо "строка", а остальное правильно.

+0

Спасибо, много помогли! –

+0

Строка такая же, как строка в C#. Я не уверен, почему язык имеет оба, но это так. –

+0

Это хороший вопрос. Что произойдет, если строка позже будет сопоставлена ​​с более быстрым классом String2? Будет ли этот класс иметь тот же метод Format? –

33

Если вы хотите взять только два numlber после запятой, вы можете использовать Math класс, который даст вам круглую функцию, например:

float value = 92.197354542; 
value = System.Math.Round(value,2);   // value = 92.20; 

Надеется, что это Помощь
Приветствия

+3

.round() is .Round() – Zafar

+0

Это именно то, что я ищу. –

+0

У меня есть значение float. так как я могу сделать то же самое. Я попробовал метод выше, но он дает синтаксическую ошибку, не может преобразовать тип float в double –

4
double amount = 31.245678; 
amount = Math.Floor(amount * 100)/100; 
+1

Как правило, ответы гораздо полезнее, если они содержат объяснение того, что должен делать код, и почему это решает проблему, не представляя других. (Это сообщение было помечено как минимум одним пользователем, по-видимому, потому, что они считали, что ответ без объяснений должен быть удален.) –

1

В качестве альтернативы , вы также можете использовать составной оператор F, а затем указать, сколько десятичных пятен вы хотите отобразить после десятичного числа.

string.Format("{0:F2}", 123.456789);  //123.46 
string.Format("{0:F3}", 123.456789);  //123.457 
string.Format("{0:F4}", 123.456789);  //123.4568 

Он будет округлен, поэтому имейте в виду.

Я получил общую документацию. Там есть тонна других операторов форматирования, которые вы можете проверить.

Источник: https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx

3

Вы можете использовать этот

"String.Format (" {0: F2} "String Value);"

// give you only the two digit after Dot, excat two digit. 
1

Try This

public static string PreciseDecimalValue(double Value, int DigitsAfterDecimal) 
     { 
      string PreciseDecimalFormat = "{0:0.0}"; 

      for (int count = 2; count <= DigitsAfterDecimal; count++) 
      { 
       PreciseDecimalFormat = PreciseDecimalFormat.Insert(PreciseDecimalFormat.LastIndexOf('}'), "0"); 
      } 
      return String.Format(PreciseDecimalFormat, Value); 
     } 
1

Используя свойство String

double value = 123.456789; 
String.Format("{0:0.00}", value); 

Примечание: Это может быть использовано для отображения только.

Использование System.Math

double value = 123.456789; 
System.Math.Round(value, 2); 
0

Использование строки интерполяции decimalVar:0.00

+0

Возможно, вы можете добавить к своему вопросу, может быть, вы можете объяснить, почему это решает проблему, некоторый фон для интерполяции ? – miltonb

+0

вместо использования String.Format string интерполяция позволяет упростить и более интуитивно понятное форматирование строк. – emanuel

1

Попробуйте это:

double result = Math.Round(24.576938593,2); 
MessageBox.Show(result.ToString()); 

Выход: 24,57

0

Простое решение:

double totalCost = 123.45678; 
totalCost = Convert.ToDouble(String.Format("{0:0.00}", totalCost)); 

//output: 123.45 
Смежные вопросы