Проблема локализации вещественных чисел

Столкнулся с проблемой, при выводе значений в консоль. Она заключается в том, что я пытаюсь вывести результат деления одного числа (double, != 0), на другое число (double, == 0). В примерах видел, что в консоль выведет ±Infinity. У меня же получился ответ -0. Далее я полез в комментарии и наткнулся на ещё один вариант ответа: ±? . Теперь вопрос, это проблема локализации, и если да, то как исправить? Пробовал менять язык, не помогает (вместо Infinity выводит 0, а вместо NaN - "не число").


Ответы (1 шт):

Автор решения: aepot

Используйте культуру при выводе

static void Main(string[] args)
{
    const double nan = double.NaN;
    const double pi = double.PositiveInfinity;
    const double ni = double.NegativeInfinity;

    Console.WriteLine(Math.PI);
    Console.WriteLine(nan);
    Console.WriteLine(pi);
    Console.WriteLine(ni);

    Console.WriteLine(Math.PI.ToString(CultureInfo.InvariantCulture));
    Console.WriteLine(nan.ToString(CultureInfo.InvariantCulture));
    Console.WriteLine(pi.ToString(CultureInfo.InvariantCulture));
    Console.WriteLine(ni.ToString(CultureInfo.InvariantCulture));

    Console.ReadKey();
}

Вывод в консоль

3,141592653589793
не число
?
-?
3.141592653589793
NaN
Infinity
-Infinity

Кстати, если добавить поддержку юникода

Console.OutputEncoding = Encoding.UTF8;

То вывод будет такой

3,141592653589793
не число
∞
-∞
3.141592653589793
NaN
Infinity
-Infinity
→ Ссылка