Формат строки C # Небольшие отрицательные значения - PullRequest
0 голосов
/ 31 августа 2018

Почему следующая программа не выводит отрицательный знак для второй строки?

var smallpos = 3.65433E-005;
var smallneg = -3.65433E-005;

Console.WriteLine("{0} in F4 format with a width of 8 characters {1}",
                  smallpos,
                  smallpos.ToString("F4").PadLeft(8).Substring(0, 8));

Console.WriteLine("{0} in F4 format with a width of 8 characters {1}",
                  smallneg,
                  smallneg.ToString("F4").PadLeft(8).Substring(0, 8));

Использование VS 2017 Professional 15.8.2 C # 7.2

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Как только вы удалите достаточно цифр со спины, оставшееся число будет иметь нулевое значение, и в этот момент существование "-" не будет иметь реального значения.

Это можно понять интуитивно, запустив приведенный ниже фрагмент кода с уменьшающимся числом, указанным для спецификатора с фиксированной точкой .

В последней строке этот спецификатор опущен, в этот момент NumberFormatInfo.NumberDecimal определяет количество используемых десятичных знаков (в зависимости от используемой культуры):

var smallneg = -3.65433E-005;

Console.WriteLine(smallneg.ToString("F10")); // -0,0000365433
Console.WriteLine(smallneg.ToString("F9"));  // -0,000036543
Console.WriteLine(smallneg.ToString("F8"));  // -0,00003654
Console.WriteLine(smallneg.ToString("F7"));  // -0,0000365
Console.WriteLine(smallneg.ToString("F6"));  // -0,000037
Console.WriteLine(smallneg.ToString("F5"));  // -0,00004
Console.WriteLine(smallneg.ToString("F4"));  // 0,0000 <-- Zero --> (-0) == 0

Console.WriteLine(smallneg.ToString("F"));   // 0,00
0 голосов
/ 31 августа 2018

-3.65433E-005 представляет -0.0000365433.

Проблема здесь с smallneg.ToString("F4"). Он учитывает только первые 4 места после десятичной точки; поскольку все они равны 0, знак минус не учитывается, так как -0 не имеет особого смысла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...