Как печатать числа с плавающей точкой с полной точностью - PullRequest
0 голосов
/ 21 апреля 2020

Если у меня есть значение 0.3, которое не может быть точно представлено double или float, как я могу напечатать его действительное значение в виде строки. Программа типа this :

using System;
class Program 
{
    static void Main(string[] args) 
    {
        var line = Console.ReadLine();
        var d = float.Parse(line);
        Console.WriteLine("{0:R}", d);
    }
}

с 0.3 в качестве ввода выводит 0.3, что странно для меня, поскольку согласно this это должно быть что-то как 0.300000011920928955078125.

Итак, вопрос в том, как заставить. net отформатировать float / double в качестве действительного значения.

1 Ответ

1 голос
/ 21 апреля 2020

Согласно Стандартные цифры c строки формата

R рекомендуется только для типа BigInteger. Для Double типов используйте «G17»; для типов Single используйте «G9».

Итак, попробуйте использовать G9 (поскольку float дает вам до 9 значащих цифр точности), он дает ожидаемый результат

Console.WriteLine("{0:G9}", d);

На моем конце я увижу 0.300000012 значение

...