Потеря знаков при конвертации строки в double

174
12 ноября 2018, 20:10

Есть возможно сделать как-то чтобы не терялись знаки при конвертации строки в double при следующих ситуациях?

string number = "12.400";
double result;
var flag = Double.TryParse(number, NumberStyles.Float,
               CultureInfo.InvariantCulture.NumberFormat, out result);

Результат будет 12.4, а нужно 12.400. Заранее сколько знаков хранить я не знаю. Стандартное готовое решение есть этому или надо парсить строку и получать сколько знаков после разделителя, а потом это использовать в формате?

Answer 1
decimal result;
Decimal.TryParse (...);

//Все знаки на месте

Answer 2

Вещественные числа хранятся в памяти в виде: знак (+/-), экспонента (степень показателя системы счисления, чаще всего 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);
READ ALSO
Как исправить прыжок?

Как исправить прыжок?

Реализацию прыжка в 2D платформере сделал через "rigidbodyAddForce", при получении урона, происходит тоже самое (то есть отталкивание)

216
Позиционирование фигуры

Позиционирование фигуры

Пытаюсь по клику мыши (её координатам) отобразить прямоугольник, но он почему то отрисовывается немного левее и выше относительно курсора,...

198