Member 13757359 Ответов: 3

Как мне отформатировать двойник, который у меня есть, который округляется до одного десятичного знака до 55.0 вместо 55 в C#


Я искал везде, чтобы найти это решение, но здесь я в растерянности. Я использую
двойное число 1=математика.Round(num1,1); Если num1 возвращает любой double, который не является "something.0", он работает нормально, но, например, если double num1 равен, скажем, 55.0, он выводит только 55 вместо 55.0! Кто - нибудь, пожалуйста, помогите мне, я уже целую вечность пытаюсь решить эту проблему. :(

Что я уже пробовал:

Я попытался создать оператор if, например if(Math.Round(num1,1)==num1.0) но очевидно, что это не сработает :/

3 Ответов

Рейтинг:
1

Christiaan van Bergen

Попробуйте это, преобразуйте его в десятичную дробь, и вы сохраните точность:

double x = 55.01;
decimal num1 = Convert.ToDecimal(x);
decimal num2 = Math.Round(num1,1);
            
Console.WriteLine(x);
Console.WriteLine(num1);
Console.WriteLine(num2);
Это приводит к тому, что
55.01
55.01
55.0


Рейтинг:
1

Patrice T

В двойнике 55 и 55.0-это точно такое же значение, А раунд-это математическая операция.
Формат печати-это совершенно другая операция.
Пользовательский Числовой Формат Строк | Майкрософт Документы[^]


Рейтинг:
0

OriginalGriff

Числа не имеют формата, вы не можете сказать двойнику: "всегда печатай так". Они приобретают формат только тогда, когда вы преобразуете их в строку для представления пользователю.
Один из способов сделать это был бы:

string formatted = myDouble.ToString("N1");