NovichekTyrnira
@NovichekTyrnira
Начинающий гений C# индустрии

Как в C# вывести число с определенным количеством знаков после запятой?

Как мне вывести b И c не округляя их?
В коде ниже переменные b и с округляются

using System;
using System.IO;
class Program
{
    static void Main()
    {
        double x = Convert.ToDouble(Console.ReadLine());
        double b = Math.PI * Math.Sqrt(x);
        double c = 2 * Math.PI * x;
        Console.WriteLine("{0: 0.000}",b);
        Console.WriteLine("{0: 0.000}",c);
    }
}
  • Вопрос задан
  • 27651 просмотр
Решения вопроса 2
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
два пути:
- изучать спецификаторы вывода от МС https://docs.microsoft.com/ru-ru/dotnet/standard/b... (в конце топика дополнительные ссылки, изучите их тоже)
- выполнить нужное округление заранее
https://docs.microsoft.com/ru-ru/dotnet/api/system...
https://habr.com/ru/sandbox/76182/
Ответ написан
Комментировать
@breathtaking
Судя по всему, стандартными средствами форматирования никак

Можно так
Console.WriteLine("{0:f4}", Math.Truncate(10000 * Math.PI) / 10000);

Можно так
Console.WriteLine(TruncateWithPrecision(Math.PI , 4));

static string TruncateWithPrecision(double value, int precision)
{
    if (precision < 0) throw new ArgumentOutOfRangeException(nameof(precision));

    var prepared = string.Format($"{{0:f{precision + 1}}}", value);
    return prepared.Substring(0, prepared.Length - (precision == 0 ? 2 : 1));
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@gemnyl
Здрасьте, я ещё совсем новичок в сфере программирования, но хотелось бы оставить свой ответ на случай, если у такого же неопытного юнца, как я, возникнет какая-то схожая проблема
Перед выводом, после всех исчислений, можно воспользоваться таким методом:
double c = Math.Round(c, 2);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы