2015-07-18 2 views
0

В C++ я хотел бы сделать:setprecision эквивалент в C#?

auto loadingTime = TimeUtilities::getDistance<milliseconds_t>(TimeUtilities::getNow(), startTime); 
std::cout << "Reset all accounts and players in " << std::setprecision(3) << loadingTime/1000.f << " seconds!" << std::endl << std::endl; 

Однако в C# Я пытался сделать что-то подобное, но это не удалось:

double loadingTime = TimeUtil.GetDistanceInMilliseconds(DateTime.Now, startTime); 

Console.WriteLine("Reset all accounts and characters in {0:0.000} seconds!", loadingTime); 

Метод GetDistanceInMilliseconds просто возвращает значение TotalMilliseconds в TimeSpan между двумя DateTime объектов.

Как я могу имитировать такое же поведение в C#?

РЕДАКТИРОВАТЬ: Разделив значение по 1000f будет работать, если значение loadingTime составляет менее 1 секунды. Если это больше 1 секунды, отображаемое значение будет неправильным.

Моя цель - отобразить время загрузки от начальной точки до конечной точки (DateTime.Now - начальная точка, а startTime - конечная точка) в миллисекундах (до 3 десятичных знаков).

+3

Вы можете показать вывод кода C++ Agains вывод кода C#? – Steve

+0

@Steve Выход такой же, значения нет. В коде C++ он показывает правильное значение, но в коде C# он отображает 7.000 секунд, что должно быть 0,007. Поэтому я добавил/1000f к значению, но это сломало его. –

+0

Выход в миллисекундах, поэтому, если вам нужны секунды, вы должны разделить на 1000. Что было нарушено делением? – Steve

ответ

0

Использование 0.### спецификатор:

7d.ToString("0.###", CultureInfo.InvariantCulture); 

7 возвращается,

0.007d.ToString("0.###", CultureInfo.InvariantCulture); 

возвращает 0.007

Смежные вопросы