DGKumar Ответов: 3

Как отобразить преобразование полного десятичного числа в строку?


Привет команда,
Я попытался скрыть полное десятичное число в строку для вывода XML.
Например: decimal mynumber = 123.768686785768759574945595 (после десятичной точки более 10 цифр)
Приведенное выше полное десятичное число необходимо преобразовать в строку и передать в XML-вывод.
Не могли бы вы мне помочь в этом деле?

Вышеприведенное же значение нужно преобразовать в строку и передать в нижеприведенный xml элемент
Ожидаемый результат: <myvalue>123.768686785768759574945595

Что я уже пробовал:

using System;
class MyTest{
  static void Main() {
      decimal munumber = 123.768686785768759574945595;
      string strnumber = Convert.ToString(munumber);
    Console.WriteLine(strnumber);
  }
}

Richard MacCutchan

В чем же проблема?

DGKumar

Привет Ричард
Я получаю нижеприведенную ошибку при выполнении этого
ошибка CS0664: литерал типа double не может быть неявно преобразован в тип `decimal'. Добавьте суффикс `m', чтобы создать литерал этого типа

Richard MacCutchan

Я думаю, вам нужно понять разницу между десятичными и плавающими числами.

3 Ответов

Рейтинг:
5

0x01AA

Так что читайте документы, например, как здесь Числовые типы с плавающей запятой - Справочник по C# | Microsoft Docs[^] и вы увидите, что вы должны сделать это так

// please note the 'm' for 123.768686785768759574945595m;
decimal munumber = 123.768686785768759574945595m;
string strnumber = Convert.ToString(munumber);
Console.WriteLine(strnumber);

Я надеюсь, что это поможет


DGKumar

Привет Все они получают только до 10 цифр, но остальные цифры не получают.
Если я поставлю "м" в конце значения и преобразую в строку, то смогу получить полное десятичное значение.
Но значение, поступающее из другого источника без "м", в таком случае как добавить " м " в конце десятичного значения ?

0x01AA

Я вижу все цифры в моем тесте... консоль показывает: 123.768686785768759574945595

0x01AA

Вы: "но значение, приходящее из другого источника без "м", в таком случае как добавить "м" в конце десятичного значения ?"

Итак, ваша проблема больше заключается в том, как преобразовать строку в десятичную?

[Редактировать]
Также это работает для меня и показывает все десятичное число.g.

string munumberInput = "123.768686785768759574945595";
decimal munumber = Convert.ToDecimal(munumberInput);
string strnumber = Convert.ToString(munumber);
Console.WriteLine(strnumber);

DGKumar

Из источника значение приходит следующим образом: 123.768686785768759574945595
затем я пытаюсь преобразовать в строку, но получаю только 10 цифр после точки (.)

0x01AA

Также это работает для меня и показывает все десятичное число.g.

string munumberInput = "123.768686785768759574945595";
decimal munumber = Convert.ToDecimal(munumberInput);
string strnumber = Convert.ToString(munumber);
Console.WriteLine(strnumber);

0x01AA

Спасибо, сэр, что согласились!

Рейтинг:
2

Dave Kreskowiak

Цитата:
Литерал типа double не может быть неявно преобразован в тип `decimal'. Добавьте суффикс `m', чтобы создать литерал этого типа
Так ты сделал именно то, что он сказал?
decimal munumber = 123.768686785768759574945595m;
                                               ^
                              Added the m to the end of the literal


Рейтинг:
1

phil.o

Попробуй

string strnumber = munumber.ToString();
Если вам нужен определенный формат для строкового представления числа, то используйте одну из перегрузок ToString() метод:
Десятичный.Метод ToString (System) | Microsoft Docs[^]


DGKumar

Привет Фил
Я получаю следующую ошибку во время выполнения
ошибка CS0664: литерал типа double не может быть неявно преобразован в тип `decimal'. Добавьте суффикс `m', чтобы создать литерал этого типа

0x01AA

Нет, извините, нейтрал 3-это с моей стороны...

DGKumar

Привет
Все они получают только до 10 цифр, но остальные цифры не получают.
Если я поставлю "м" в конце значения и преобразую в строку, то смогу получить полное десятичное значение.

Как показано ниже:
десятичное число = 123.768686785768759574945595 м;
string strnumber = преобразовать.Метод toString(munumber);

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