Строковый формат для одного десятичного знака?

Я хотел бы рассказать только одно десятичное место. Я пробовал следующее:

string thevalue = "6.33";
thevalue = string.Format("{0:0.#}", thevalue);

результат: 6.33. Но должно быть 6.3? Даже 0.0 не работает. Что я делаю неправильно?

Ответ 1

Для этого вам нужно это значение с плавающей запятой.

double thevalue = 6.33;

Вот демоверсия. Прямо сейчас это просто строка, поэтому она будет вставлена ​​как есть. Если вам нужно проанализировать его, используйте double.Parse или double.TryParse. (Или float, или decimal.)

Ответ 2

Вот еще один способ форматирования чисел с плавающей запятой по мере необходимости:

string.Format("{0:F1}",6.33);

Ответ 3

Вот несколько разных примеров:

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

Ответ 4

ToString() упрощает работу. double.Parse(theValue).ToString("N1")

Ответ 5

вариант 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

Другие ответы округлились для меня, если я выбрал, скажем, 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

Ответ 7

Пожалуйста, это:

String.Format("{0:0.0}", 123.4567); // return 123.5