У меня есть функция, которая очень хорошо работает для не слишком больших значений:
public BigInteger GetFrom(decimal value)
{
var decimalPlaces = 20;
var factor = (decimal) Math.Pow(10, decimalPlaces);
return new BigInteger(value * factor);
}
Правильно преобразуется:
123m = 12300000000000000000000
123.123456789m = 12312345678900000000000
0.123m = 12300000000000000000
0.123456789m = 12345678900000000000
0.123456789012345678902345678901234567890m = 12345678901234567890
1.123456789012345678902345678901234567890m = 112345678901234567890
Но выводит что-то вроде: 12345678901234567890.12345678901234567890m.Конечно, потому что 12345678901234567890.12345678901234567890m * Math.Pow (10, 20) слишком велика для десятичной дроби, но мне не нужно это как десятичная дробь, мне нужно это как BigInteger, как примеры до
12345678901234567890.12345678901234567890m = 1234567890123456789012345678901234567890
Buy,Я не уверен, что / как лучше всего решить эту проблему ...