Как выводить числа без e?

180
18 января 2019, 05:40

Есть программа, она может выдать и нормальные значения (10.10 к примеру), а может и "корявые". К примеру, 3.333333e что-то типа такого. Нужно сделать проверку на вот эту "e", чтобы в результат не выдавались те числа, в которых присутствует "e".

Answer 1

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

Для того чтобы форматтер отбрасывал незначащие цифры, используйте заместитель цифры #:

var x = 0.00001 / Math.PI;
Console.WriteLine(x);
Console.WriteLine(x.ToString("0.#########################"));
// 3,18309886183791E-06
// 0,00000318309886183791

Если вы не знаете заранее каких минимальных значений могут достигать ваши числа, можно написать что-то вроде:

public static readonly string doubleSchoolFormat = "0." + new string('#', 324);
...
var x = 1E-300 / Math.PI;
Console.WriteLine(x);
Console.WriteLine(x.ToString(doubleSchoolFormat));
// 3,18309886183791E-301
// 0,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000318309886183791

Строки настраиваемых числовых форматов
double (справочник по C#)

READ ALSO
Программно открыть cmd.exe от имени администратора и перенаправить потоки ввода и вывода

Программно открыть cmd.exe от имени администратора и перенаправить потоки ввода и вывода

Пишу небольшую утилиту, которая имеет необходимость раз в несколько секунд выполнять какую-либо команду командной строке Windows от имени администратораСоздавать...

126
Порядок действий метода JsonConvert.DeserializeObject

Порядок действий метода JsonConvert.DeserializeObject

У меня есть классМне нужно делать таких экземпляров много

157
Unixtimestamp в Datetime

Unixtimestamp в Datetime

Есть время 1538122139000Хочу его сконвертировать в DateTime

153