Это правда, но, похоже, ему не нравится ToString, он хочет построить десятичную строку из битов (извлечь 96-битное значение типа int, экспоненту, знак).
ел бы иметь возможность получить кусочки отSystem.Decimal
значение, а затем преобразовать его в строковое представление значения, так же, какDecimal.ToString()
будет делать, но мне трудно придумать алгоритм.
Итак, у меня есть что-то вроде этого:
decimal d = 1403.45433M;
int[] nDecimalBits = decimal.GetBits(d);
// How to convert the 4 integers in nDecimalBits to a string
// that contains "1403.45433"?
Я знаю двоичную структуру десятичного числа - первые 3 целых числа содержат биты значения, а последнее целое число содержит бит знака и коэффициент масштабирования.
Я попытался найти алгоритм с использованием различных поисковых терминов, но десятичная дробь в основном используется как синоним «числа с плавающей запятой», поэтому мои поиски нашли ответы на несвязанные проблемы.
Любая помощь будет оценена.
редактировать: в ответ на некоторые ответы мне нужно отправить биты на другую платформу, где значение должно быть восстановлено. System.Decimal и любая из его функций-членов там недоступны, поэтому мне нужно взять биты и перевести их в строку.
Если бы у меня был выбор, я бы, очевидно, использовалToString()
но тогда мне не нужно было бы спрашивать.