Форматирование double (знаки после запятой) - C#

Узнай цену своей работы

Формулировка задачи:

Имеется double 58.1 Я могу преобразовать его к строке вида "58.100" посредством
string.Format("{0:0.000}", (double)num)
Но мне необходимо в double хранить именно 58.100, т.к. дальше происходит сериализация в Json. Как такое можно реализовать? Или есть возможность при сериализации указать количество десятичных знаков?

Решение задачи: «Форматирование double (знаки после запятой)»

textual
Листинг программы
class X
{
    public double x;
    public string Kawai = " Kawai ^^ ";
}
 
class MyConverter : JsonConverter
{
    public override bool CanConvert(Type type)
    {
        return type == typeof(double);
    }
    
    public override bool CanRead => false;
    public override bool CanWrite => true;
 
    public override Object ReadJson(
        JsonReader reader,
        Type objectType,
        Object existingValue,
        JsonSerializer serializer
    )
    {
        throw new NotSupportedException();
    }
 
    public override void WriteJson(
        JsonWriter writer,
        Object value,
        JsonSerializer serializer
    )
    {
        writer.WriteRawValue(((double)value).ToString("F3"));
    }
}
 
void Main()
{
    var x = new X { x = 1.7 };
    var serializer = new JsonSerializer();
    serializer.Converters.Add(new MyConverter());
    serializer.Serialize(Console.Out, x);
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5
Похожие ответы