установить точность c # - PullRequest
0 голосов
/ 10 июня 2018

Можно ли установить точность двойных значений в c # для всех двойных значений, включенных в проект?У меня там много ценностей, и менять их с помощью Math.Round было бы утомительно.Например, мне нужно иметь двойное значение 5.12345 вместо 5.123455123321321.

1 Ответ

0 голосов
/ 10 июня 2018

Это фундаментальное ограничение для типов с плавающей запятой . На самом деле double хранится внутри как показатель степени знака и мантисса, показатель степени - база 2, поэтому у него много проблем с базой 10..

Самым простым решением является использование 64-битного базового типа с плавающей запятой, а именно decimal.Он по-прежнему с плавающей точкой, он все еще имеет ограниченную точность, но во многих случаях он более дружественный и более точный для работы

Обновление

Если все, что вы хотитеЧтобы изменить вывод на экран, вы можете использовать округление (которое вам известно) или соответствующие спецификаторы формата с string.format ToString или интерполяцию строки

Пример

var number = 5.123455123321321;
Console.WriteLine(number.ToString("F3", 
                  CultureInfo.InvariantCulture));
Console.WriteLine($"{number:F3}");
// Displays 5.123
// Displays 5.123
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...