Преобразование десятичной дроби в двойную возвращает научную нотацию c - PullRequest
1 голос
/ 09 апреля 2020

Я читаю данные из файла Excel, а значение данных равно 0,0000000001. Когда оно читается из C#, значение возвращается как 1E-10. Значение ячейки: row.Cells[2].Value = 1E-10

Я пытался из других постов сначала преобразовать в десятичное число:

decimal h1 = Decimal.Parse(row.Cells[2].Value.ToString(), System.Globalization.NumberStyles.Any);

и здесь h1 = 0.0000000001, как и ожидалось.

Мне нужно значение должно быть в два раза, поэтому я тогда сделал:

Double val1 = Decimal.ToDouble(h1);

Но val1 теперь вернулся к 1E-10

Как я могу сохранить значение как double = 0.0000000001?

Пожалуйста, протестируйте следующий фрагмент кода, чтобы проиллюстрировать, в чем заключается проблема:

десятичный t1 = Decimal.Parse ("1E-10", System.Globalization.NumberStyles.Any); Double t2 = Convert.ToDouble (t1);

Вы увидите t1 = .0000000001 и t2 = 1E-10

Ответы [ 2 ]

0 голосов
/ 09 апреля 2020

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

 Double val1 = Convert.ToDouble(h1)

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

Console.WriteLine(h1.toString("F10"))

Где F10 - это требуемый формат десятичных дробей

0 голосов
/ 09 апреля 2020

1E-10 совпадает с 0.0000000001

Я не проверял, но, возможно, это поможет:

string variable = $"{val1:N10}";

...