Есть возможно сделать как-то чтобы не терялись знаки при конвертации строки в double при следующих ситуациях?
string number = "12.400";
double result;
var flag = Double.TryParse(number, NumberStyles.Float,
CultureInfo.InvariantCulture.NumberFormat, out result);
Результат будет 12.4, а нужно 12.400. Заранее сколько знаков хранить я не знаю. Стандартное готовое решение есть этому или надо парсить строку и получать сколько знаков после разделителя, а потом это использовать в формате?
decimal result;
Decimal.TryParse (...);
//Все знаки на месте
Вещественные числа хранятся в памяти в виде: знак (+/-), экспонента (степень показателя системы счисления, чаще всего 2), мантисса (набор битов, которые кодируют мантиссу числа).
В этом смысле числа 12.4 и 12.400 эквивалентны, так как будут храниться в памяти одинаково. Если нужно, храните отдельно количество знаков после запятой. Можете это количество вычислять исходя из строки:
string number = "12.400";
int digitCount = number.Split('.')[1].Length;
А потом форматировать соответствующим образом:
double result;
var flag = Double.TryParse(number, NumberStyles.Float, CultureInfo.InvariantCulture.NumberFormat, out result);
string numberFormated = String.Format("{0:0.".PadRight(digitCount, "0") + "}", result);
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости