Я хотел бы рассказать только одно десятичное место. Я пробовал следующее:
string thevalue = "6.33";
thevalue = string.Format("{0:0.#}", thevalue);
результат: 6.33. Но должно быть 6.3? Даже 0.0 не работает. Что я делаю неправильно?
Я хотел бы рассказать только одно десятичное место. Я пробовал следующее:
string thevalue = "6.33";
thevalue = string.Format("{0:0.#}", thevalue);
результат: 6.33. Но должно быть 6.3? Даже 0.0 не работает. Что я делаю неправильно?
Для этого вам нужно это значение с плавающей запятой.
double thevalue = 6.33;
Вот демоверсия. Прямо сейчас это просто строка, поэтому она будет вставлена как есть. Если вам нужно проанализировать его, используйте double.Parse
или double.TryParse
. (Или float
, или decimal
.)
Вот еще один способ форматирования чисел с плавающей запятой по мере необходимости:
string.Format("{0:F1}",6.33);
Вот несколько разных примеров:
double l_value = 6;
string result= string.Format("{0:0.00}", l_value );
Console.WriteLine(result);
Выход: 6.00
double l_value = 6.33333;
string result= string.Format("{0:0.00}", l_value );
Console.WriteLine(result);
Выход: 6.33
double l_value = 6.4567;
string result = string.Format("{0:0.00}", l_value);
Console.WriteLine(result);
Выход: 6.46
ToString() упрощает работу.
double.Parse(theValue).ToString("N1")
вариант 1 (пусть это строка):
string thevalue = "6.33";
thevalue = string.Format("{0}", thevalue.Substring(0, thevalue.length-1));
вариант 2 (конвертировать его):
string thevalue = "6.33";
var thevalue = string.Format("{0:0.0}", double.Parse(theValue));
вариант 3 (запустить RegEx):
var regex = new Regex(@"(\d+\.\d)"); // but that everywhere, maybe static
thevalue = regexObj.Match(thevalue ).Groups[1].Value;
Другие ответы округлились для меня, если я выбрал, скажем, 6.39 или даже что-то вроде 6.398925. Этот подход состоит в том, чтобы преобразовать в строку as-is, затем искать десятичное место и возвращать после него только одно число:
double val = 6.39;
string truncatedString = val.ToString().Substring(0, val.ToString().IndexOf(".") + 2);
Console.WriteLine(truncatedString);
//returns 6.3
Пожалуйста, это:
String.Format("{0:0.0}", 123.4567); // return 123.5