Есть переменная типа double d = 1.5997, подскажите пожалуйста, как вывести три знака после запятой не округляя его?
Пробовал Console.WriteLine("{0:0.###}", d); Возвращает 1.6.
Пробовал Console.WriteLine("{0:0.000}", d); Возвращает 1.600,
а нужно 1.599.
Вот такой костыль поможет. precision - требуемое число знаков после запятой
static double myRound(double x, int precision)
{
return ((int)(x * Math.Pow(10.0, precision)) / Math.Pow(10.0, precision));
}
Вот менее уневерсальный вариант но более быстрый.
Math.Truncate(1000 * 1.5997) / 1000; // 1,599
небольшая манипуляция должна решить ваш вопрос.
public double ReformatDouble (double num)
{
string number = num.ToString();
string[] array = number.Split('.');
string newNum = array[0].ToString() + "." + array[1].Substring(0, 3).ToString();
return Double.Parse(newNum);
}
ReformatDouble(1.12345);
//результат 1.123
String.Format("{0:0.000}", 140.6767554); // "140.676"
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости